home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1992-09-27 | 21.4 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, Sun Sep 27 02:26:59 1992, modified Sun Sep 27 02:26:59 1992, creator 'MPS ', type ASCII, 21122 bytes "regexec.c" , at 0x5302 428 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 09 72 65 67 65 78 65 | 63 2e 63 00 00 00 00 00 |..regexe|c.c.....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 52 82 00 | 00 01 ac a6 eb 04 b3 a6 |.....R..|........|
|00000060| eb 04 b3 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 b2 1b 00 00 |........|........|
|00000080| 2f 2a 20 4e 4f 54 45 3a | 20 74 68 69 73 20 69 73 |/* NOTE:| this is|
|00000090| 20 64 65 72 69 76 65 64 | 20 66 72 6f 6d 20 48 65 | derived| from He|
|000000a0| 6e 72 79 20 53 70 65 6e | 63 65 72 27 73 20 72 65 |nry Spen|cer's re|
|000000b0| 67 65 78 70 20 63 6f 64 | 65 2c 20 61 6e 64 20 73 |gexp cod|e, and s|
|000000c0| 68 6f 75 6c 64 20 6e 6f | 74 0d 20 2a 20 63 6f 6e |hould no|t. * con|
|000000d0| 66 75 73 65 64 20 77 69 | 74 68 20 74 68 65 20 6f |fused wi|th the o|
|000000e0| 72 69 67 69 6e 61 6c 20 | 70 61 63 6b 61 67 65 20 |riginal |package |
|000000f0| 28 73 65 65 20 70 6f 69 | 6e 74 20 33 20 62 65 6c |(see poi|nt 3 bel|
|00000100| 6f 77 29 2e 20 20 54 68 | 61 6e 6b 73 2c 20 48 65 |ow). Th|anks, He|
|00000110| 6e 72 79 21 0d 20 2a 2f | 0d 0d 2f 2a 20 41 64 64 |nry!. */|../* Add|
|00000120| 69 74 69 6f 6e 61 6c 20 | 6e 6f 74 65 3a 20 74 68 |itional |note: th|
|00000130| 69 73 20 63 6f 64 65 20 | 69 73 20 76 65 72 79 20 |is code |is very |
|00000140| 68 65 61 76 69 6c 79 20 | 6d 75 6e 67 65 64 20 66 |heavily |munged f|
|00000150| 72 6f 6d 20 48 65 6e 72 | 79 27 73 20 76 65 72 73 |rom Henr|y's vers|
|00000160| 69 6f 6e 0d 20 2a 20 69 | 6e 20 70 6c 61 63 65 73 |ion. * i|n places|
|00000170| 2e 20 20 49 6e 20 73 6f | 6d 65 20 73 70 6f 74 73 |. In so|me spots|
|00000180| 20 49 27 76 65 20 74 72 | 61 64 65 64 20 63 6c 61 | I've tr|aded cla|
|00000190| 72 69 74 79 20 66 6f 72 | 20 65 66 66 69 63 69 65 |rity for| efficie|
|000001a0| 6e 63 79 2c 20 73 6f 20 | 64 6f 6e 27 74 0d 20 2a |ncy, so |don't. *|
|000001b0| 20 62 6c 61 6d 65 20 48 | 65 6e 72 79 20 66 6f 72 | blame H|enry for|
|000001c0| 20 73 6f 6d 65 20 6f 66 | 20 74 68 65 20 6c 61 63 | some of| the lac|
|000001d0| 6b 20 6f 66 20 72 65 61 | 64 61 62 69 6c 69 74 79 |k of rea|dability|
|000001e0| 2e 0d 20 2a 2f 0d 0d 2f | 2a 20 24 52 43 53 66 69 |.. */../|* $RCSfi|
|000001f0| 6c 65 3a 20 72 65 67 65 | 78 65 63 2e 63 2c 76 20 |le: rege|xec.c,v |
|00000200| 24 24 52 65 76 69 73 69 | 6f 6e 3a 20 34 2e 30 2e |$$Revisi|on: 4.0.|
|00000210| 31 2e 34 20 24 24 44 61 | 74 65 3a 20 39 32 2f 30 |1.4 $$Da|te: 92/0|
|00000220| 36 2f 30 38 20 31 35 3a | 32 35 3a 35 30 20 24 0d |6/08 15:|25:50 $.|
|00000230| 20 2a 0d 20 2a 20 24 4c | 6f 67 3a 09 72 65 67 65 | *. * $L|og:.rege|
|00000240| 78 65 63 2e 63 2c 76 20 | 24 0d 20 2a 20 52 65 76 |xec.c,v |$. * Rev|
|00000250| 69 73 69 6f 6e 20 34 2e | 30 2e 31 2e 34 20 20 39 |ision 4.|0.1.4 9|
|00000260| 32 2f 30 36 2f 30 38 20 | 20 31 35 3a 32 35 3a 35 |2/06/08 | 15:25:5|
|00000270| 30 20 20 6c 77 61 6c 6c | 0d 20 2a 20 70 61 74 63 |0 lwall|. * patc|
|00000280| 68 32 30 3a 20 70 61 74 | 74 65 72 6e 20 6d 6f 64 |h20: pat|tern mod|
|00000290| 69 66 69 65 72 73 20 69 | 20 61 6e 64 20 67 20 64 |ifiers i| and g d|
|000002a0| 69 64 6e 27 74 20 69 6e | 74 65 72 61 63 74 20 72 |idn't in|teract r|
|000002b0| 69 67 68 74 0d 20 2a 20 | 70 61 74 63 68 32 30 3a |ight. * |patch20:|
|000002c0| 20 69 6e 20 73 6f 6d 65 | 20 63 61 73 65 73 20 24 | in some| cases $|
|000002d0| 60 20 61 6e 64 20 24 27 | 20 64 69 64 6e 27 74 20 |` and $'| didn't |
|000002e0| 67 65 74 20 73 65 74 20 | 62 79 20 6d 61 74 63 68 |get set |by match|
|000002f0| 0d 20 2a 20 70 61 74 63 | 68 32 30 3a 20 2f 78 7b |. * patc|h20: /x{|
|00000300| 30 7d 2f 20 77 61 73 20 | 77 72 6f 6e 67 6c 79 20 |0}/ was |wrongly |
|00000310| 69 6e 74 65 72 70 72 65 | 74 65 64 20 61 73 20 2f |interpre|ted as /|
|00000320| 78 7b 30 2c 7d 2f 0d 20 | 2a 20 0d 20 2a 20 52 65 |x{0,}/. |* . * Re|
|00000330| 76 69 73 69 6f 6e 20 34 | 2e 30 2e 31 2e 33 20 20 |vision 4|.0.1.3 |
|00000340| 39 31 2f 31 31 2f 30 35 | 20 20 31 38 3a 32 33 3a |91/11/05| 18:23:|
|00000350| 35 35 20 20 6c 77 61 6c | 6c 0d 20 2a 20 70 61 74 |55 lwal|l. * pat|
|00000360| 63 68 31 31 3a 20 70 72 | 65 70 61 72 65 64 20 66 |ch11: pr|epared f|
|00000370| 6f 72 20 63 74 79 70 65 | 20 69 6d 70 6c 65 6d 65 |or ctype| impleme|
|00000380| 6e 74 61 74 69 6f 6e 73 | 20 74 68 61 74 20 64 6f |ntations| that do|
|00000390| 6e 27 74 20 64 65 66 69 | 6e 65 20 69 73 61 73 63 |n't defi|ne isasc|
|000003a0| 69 69 28 29 0d 20 2a 20 | 70 61 74 63 68 31 31 3a |ii(). * |patch11:|
|000003b0| 20 69 6e 69 74 69 61 6c | 20 2e 2a 20 69 6e 20 70 | initial| .* in p|
|000003c0| 61 74 74 65 72 6e 20 68 | 61 64 20 64 65 70 65 6e |attern h|ad depen|
|000003d0| 64 65 6e 63 79 20 6f 6e | 20 76 61 6c 75 65 20 6f |dency on| value o|
|000003e0| 66 20 24 2a 0d 20 2a 20 | 0d 20 2a 20 52 65 76 69 |f $*. * |. * Revi|
|000003f0| 73 69 6f 6e 20 34 2e 30 | 2e 31 2e 32 20 20 39 31 |sion 4.0|.1.2 91|
|00000400| 2f 30 36 2f 30 37 20 20 | 31 31 3a 35 30 3a 33 33 |/06/07 |11:50:33|
|00000410| 20 20 6c 77 61 6c 6c 0d | 20 2a 20 70 61 74 63 68 | lwall.| * patch|
|00000420| 34 3a 20 6e 65 77 20 63 | 6f 70 79 72 69 67 68 74 |4: new c|opyright|
|00000430| 20 6e 6f 74 69 63 65 0d | 20 2a 20 70 61 74 63 68 | notice.| * patch|
|00000440| 34 3a 20 2f 2f 20 77 6f | 75 6c 64 6e 27 74 20 75 |4: // wo|uldn't u|
|00000450| 73 65 20 70 72 65 76 69 | 6f 75 73 20 70 61 74 74 |se previ|ous patt|
|00000460| 65 72 6e 20 69 66 20 69 | 74 20 73 74 61 72 74 65 |ern if i|t starte|
|00000470| 64 20 77 69 74 68 20 61 | 20 6e 75 6c 6c 20 63 68 |d with a| null ch|
|00000480| 61 72 61 63 74 65 72 0d | 20 2a 20 0d 20 2a 20 52 |aracter.| * . * R|
|00000490| 65 76 69 73 69 6f 6e 20 | 34 2e 30 2e 31 2e 31 20 |evision |4.0.1.1 |
|000004a0| 20 39 31 2f 30 34 2f 31 | 32 20 20 30 39 3a 30 37 | 91/04/1|2 09:07|
|000004b0| 3a 33 39 20 20 6c 77 61 | 6c 6c 0d 20 2a 20 70 61 |:39 lwa|ll. * pa|
|000004c0| 74 63 68 31 3a 20 72 65 | 67 65 78 65 63 20 6f 6e |tch1: re|gexec on|
|000004d0| 6c 79 20 61 6c 6c 6f 63 | 61 74 65 64 20 73 70 61 |ly alloc|ated spa|
|000004e0| 63 65 20 66 6f 72 20 39 | 20 73 75 62 65 78 70 72 |ce for 9| subexpr|
|000004f0| 65 73 73 73 69 6f 6e 73 | 0d 20 2a 20 0d 20 2a 20 |esssions|. * . * |
|00000500| 52 65 76 69 73 69 6f 6e | 20 34 2e 30 20 20 39 31 |Revision| 4.0 91|
|00000510| 2f 30 33 2f 32 30 20 20 | 30 31 3a 33 39 3a 31 36 |/03/20 |01:39:16|
|00000520| 20 20 6c 77 61 6c 6c 0d | 20 2a 20 34 2e 30 20 62 | lwall.| * 4.0 b|
|00000530| 61 73 65 6c 69 6e 65 2e | 0d 20 2a 20 0d 20 2a 2f |aseline.|. * . */|
|00000540| 0d 2f 2a 53 55 50 50 52 | 45 53 53 20 31 31 32 2a |./*SUPPR|ESS 112*|
|00000550| 2f 0d 2f 2a 0d 20 2a 20 | 72 65 67 63 6f 6d 70 20 |/./*. * |regcomp |
|00000560| 61 6e 64 20 72 65 67 65 | 78 65 63 20 2d 2d 20 72 |and rege|xec -- r|
|00000570| 65 67 73 75 62 20 61 6e | 64 20 72 65 67 65 72 72 |egsub an|d regerr|
|00000580| 6f 72 20 61 72 65 20 6e | 6f 74 20 75 73 65 64 20 |or are n|ot used |
|00000590| 69 6e 20 70 65 72 6c 0d | 20 2a 0d 20 2a 09 43 6f |in perl.| *. *.Co|
|000005a0| 70 79 72 69 67 68 74 20 | 28 63 29 20 31 39 38 36 |pyright |(c) 1986|
|000005b0| 20 62 79 20 55 6e 69 76 | 65 72 73 69 74 79 20 6f | by Univ|ersity o|
|000005c0| 66 20 54 6f 72 6f 6e 74 | 6f 2e 0d 20 2a 09 57 72 |f Toront|o.. *.Wr|
|000005d0| 69 74 74 65 6e 20 62 79 | 20 48 65 6e 72 79 20 53 |itten by| Henry S|
|000005e0| 70 65 6e 63 65 72 2e 20 | 20 4e 6f 74 20 64 65 72 |pencer. | Not der|
|000005f0| 69 76 65 64 20 66 72 6f | 6d 20 6c 69 63 65 6e 73 |ived fro|m licens|
|00000600| 65 64 20 73 6f 66 74 77 | 61 72 65 2e 0d 20 2a 0d |ed softw|are.. *.|
|00000610| 20 2a 09 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | *.Permi|ssion is|
|00000620| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 61 6e 79 6f | granted| to anyo|
|00000630| 6e 65 20 74 6f 20 75 73 | 65 20 74 68 69 73 20 73 |ne to us|e this s|
|00000640| 6f 66 74 77 61 72 65 20 | 66 6f 72 20 61 6e 79 0d |oftware |for any.|
|00000650| 20 2a 09 70 75 72 70 6f | 73 65 20 6f 6e 20 61 6e | *.purpo|se on an|
|00000660| 79 20 63 6f 6d 70 75 74 | 65 72 20 73 79 73 74 65 |y comput|er syste|
|00000670| 6d 2c 20 61 6e 64 20 74 | 6f 20 72 65 64 69 73 74 |m, and t|o redist|
|00000680| 72 69 62 75 74 65 20 69 | 74 20 66 72 65 65 6c 79 |ribute i|t freely|
|00000690| 2c 0d 20 2a 09 73 75 62 | 6a 65 63 74 20 74 6f 20 |,. *.sub|ject to |
|000006a0| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 72 65 |the foll|owing re|
|000006b0| 73 74 72 69 63 74 69 6f | 6e 73 3a 0d 20 2a 0d 20 |strictio|ns:. *. |
|000006c0| 2a 09 31 2e 20 54 68 65 | 20 61 75 74 68 6f 72 20 |*.1. The| author |
|000006d0| 69 73 20 6e 6f 74 20 72 | 65 73 70 6f 6e 73 69 62 |is not r|esponsib|
|000006e0| 6c 65 20 66 6f 72 20 74 | 68 65 20 63 6f 6e 73 65 |le for t|he conse|
|000006f0| 71 75 65 6e 63 65 73 20 | 6f 66 20 75 73 65 20 6f |quences |of use o|
|00000700| 66 0d 20 2a 09 09 74 68 | 69 73 20 73 6f 66 74 77 |f. *..th|is softw|
|00000710| 61 72 65 2c 20 6e 6f 20 | 6d 61 74 74 65 72 20 68 |are, no |matter h|
|00000720| 6f 77 20 61 77 66 75 6c | 2c 20 65 76 65 6e 20 69 |ow awful|, even i|
|00000730| 66 20 74 68 65 79 20 61 | 72 69 73 65 0d 20 2a 09 |f they a|rise. *.|
|00000740| 09 66 72 6f 6d 20 64 65 | 66 65 63 74 73 20 69 6e |.from de|fects in|
|00000750| 20 69 74 2e 0d 20 2a 0d | 20 2a 09 32 2e 20 54 68 | it.. *.| *.2. Th|
|00000760| 65 20 6f 72 69 67 69 6e | 20 6f 66 20 74 68 69 73 |e origin| of this|
|00000770| 20 73 6f 66 74 77 61 72 | 65 20 6d 75 73 74 20 6e | softwar|e must n|
|00000780| 6f 74 20 62 65 20 6d 69 | 73 72 65 70 72 65 73 65 |ot be mi|sreprese|
|00000790| 6e 74 65 64 2c 20 65 69 | 74 68 65 72 0d 20 2a 09 |nted, ei|ther. *.|
|000007a0| 09 62 79 20 65 78 70 6c | 69 63 69 74 20 63 6c 61 |.by expl|icit cla|
|000007b0| 69 6d 20 6f 72 20 62 79 | 20 6f 6d 69 73 73 69 6f |im or by| omissio|
|000007c0| 6e 2e 0d 20 2a 0d 20 2a | 09 33 2e 20 41 6c 74 65 |n.. *. *|.3. Alte|
|000007d0| 72 65 64 20 76 65 72 73 | 69 6f 6e 73 20 6d 75 73 |red vers|ions mus|
|000007e0| 74 20 62 65 20 70 6c 61 | 69 6e 6c 79 20 6d 61 72 |t be pla|inly mar|
|000007f0| 6b 65 64 20 61 73 20 73 | 75 63 68 2c 20 61 6e 64 |ked as s|uch, and|
|00000800| 20 6d 75 73 74 20 6e 6f | 74 0d 20 2a 09 09 62 65 | must no|t. *..be|
|00000810| 20 6d 69 73 72 65 70 72 | 65 73 65 6e 74 65 64 20 | misrepr|esented |
|00000820| 61 73 20 62 65 69 6e 67 | 20 74 68 65 20 6f 72 69 |as being| the ori|
|00000830| 67 69 6e 61 6c 20 73 6f | 66 74 77 61 72 65 2e 0d |ginal so|ftware..|
|00000840| 20 2a 0d 20 2a 2a 2a 2a | 20 20 20 20 41 6c 74 65 | *. ****| Alte|
|00000850| 72 61 74 69 6f 6e 73 20 | 74 6f 20 48 65 6e 72 79 |rations |to Henry|
|00000860| 27 73 20 63 6f 64 65 20 | 61 72 65 2e 2e 2e 0d 20 |'s code |are.... |
|00000870| 2a 2a 2a 2a 0d 20 2a 2a | 2a 2a 20 20 20 20 43 6f |****. **|** Co|
|00000880| 70 79 72 69 67 68 74 20 | 28 63 29 20 31 39 39 31 |pyright |(c) 1991|
|00000890| 2c 20 4c 61 72 72 79 20 | 57 61 6c 6c 0d 20 2a 2a |, Larry |Wall. **|
|000008a0| 2a 2a 0d 20 2a 2a 2a 2a | 20 20 20 20 59 6f 75 20 |**. ****| You |
|000008b0| 6d 61 79 20 64 69 73 74 | 72 69 62 75 74 65 20 75 |may dist|ribute u|
|000008c0| 6e 64 65 72 20 74 68 65 | 20 74 65 72 6d 73 20 6f |nder the| terms o|
|000008d0| 66 20 65 69 74 68 65 72 | 20 74 68 65 20 47 4e 55 |f either| the GNU|
|000008e0| 20 47 65 6e 65 72 61 6c | 20 50 75 62 6c 69 63 0d | General| Public.|
|000008f0| 20 2a 2a 2a 2a 20 20 20 | 20 4c 69 63 65 6e 73 65 | **** | License|
|00000900| 20 6f 72 20 74 68 65 20 | 41 72 74 69 73 74 69 63 | or the |Artistic|
|00000910| 20 4c 69 63 65 6e 73 65 | 2c 20 61 73 20 73 70 65 | License|, as spe|
|00000920| 63 69 66 69 65 64 20 69 | 6e 20 74 68 65 20 52 45 |cified i|n the RE|
|00000930| 41 44 4d 45 20 66 69 6c | 65 2e 0d 20 2a 0d 20 2a |ADME fil|e.. *. *|
|00000940| 20 42 65 77 61 72 65 20 | 74 68 61 74 20 73 6f 6d | Beware |that som|
|00000950| 65 20 6f 66 20 74 68 69 | 73 20 63 6f 64 65 20 69 |e of thi|s code i|
|00000960| 73 20 73 75 62 74 6c 79 | 20 61 77 61 72 65 20 6f |s subtly| aware o|
|00000970| 66 20 74 68 65 20 77 61 | 79 20 6f 70 65 72 61 74 |f the wa|y operat|
|00000980| 6f 72 0d 20 2a 20 70 72 | 65 63 65 64 65 6e 63 65 |or. * pr|ecedence|
|00000990| 20 69 73 20 73 74 72 75 | 63 74 75 72 65 64 20 69 | is stru|ctured i|
|000009a0| 6e 20 72 65 67 75 6c 61 | 72 20 65 78 70 72 65 73 |n regula|r expres|
|000009b0| 73 69 6f 6e 73 2e 20 20 | 53 65 72 69 6f 75 73 20 |sions. |Serious |
|000009c0| 63 68 61 6e 67 65 73 20 | 69 6e 0d 20 2a 20 72 65 |changes |in. * re|
|000009d0| 67 75 6c 61 72 2d 65 78 | 70 72 65 73 73 69 6f 6e |gular-ex|pression|
|000009e0| 20 73 79 6e 74 61 78 20 | 6d 69 67 68 74 20 72 65 | syntax |might re|
|000009f0| 71 75 69 72 65 20 61 20 | 74 6f 74 61 6c 20 72 65 |quire a |total re|
|00000a00| 74 68 69 6e 6b 2e 0d 20 | 2a 2f 0d 23 69 6e 63 6c |think.. |*/.#incl|
|00000a10| 75 64 65 20 22 45 58 54 | 45 52 4e 2e 68 22 0d 23 |ude "EXT|ERN.h".#|
|00000a20| 69 6e 63 6c 75 64 65 20 | 22 70 65 72 6c 2e 68 22 |include |"perl.h"|
|00000a30| 0d 23 69 6e 63 6c 75 64 | 65 20 22 72 65 67 63 6f |.#includ|e "regco|
|00000a40| 6d 70 2e 68 22 0d 0d 23 | 69 66 6e 64 65 66 20 53 |mp.h"..#|ifndef S|
|00000a50| 54 41 54 49 43 0d 23 64 | 65 66 69 6e 65 09 53 54 |TATIC.#d|efine.ST|
|00000a60| 41 54 49 43 09 73 74 61 | 74 69 63 0d 23 65 6e 64 |ATIC.sta|tic.#end|
|00000a70| 69 66 0d 0d 23 69 66 64 | 65 66 20 44 45 42 55 47 |if..#ifd|ef DEBUG|
|00000a80| 47 49 4e 47 0d 69 6e 74 | 20 72 65 67 6e 61 72 72 |GING.int| regnarr|
|00000a90| 61 74 65 20 3d 20 30 3b | 0d 23 65 6e 64 69 66 0d |ate = 0;|.#endif.|
|00000aa0| 0d 2f 2a 0d 20 2a 20 72 | 65 67 65 78 65 63 20 61 |./*. * r|egexec a|
|00000ab0| 6e 64 20 66 72 69 65 6e | 64 73 0d 20 2a 2f 0d 0d |nd frien|ds. */..|
|00000ac0| 2f 2a 0d 20 2a 20 47 6c | 6f 62 61 6c 20 77 6f 72 |/*. * Gl|obal wor|
|00000ad0| 6b 20 76 61 72 69 61 62 | 6c 65 73 20 66 6f 72 20 |k variab|les for |
|00000ae0| 72 65 67 65 78 65 63 28 | 29 2e 0d 20 2a 2f 0d 73 |regexec(|).. */.s|
|00000af0| 74 61 74 69 63 20 63 68 | 61 72 20 2a 72 65 67 70 |tatic ch|ar *regp|
|00000b00| 72 65 63 6f 6d 70 3b 0d | 73 74 61 74 69 63 20 63 |recomp;.|static c|
|00000b10| 68 61 72 20 2a 72 65 67 | 69 6e 70 75 74 3b 09 09 |har *reg|input;..|
|00000b20| 2f 2a 20 53 74 72 69 6e | 67 2d 69 6e 70 75 74 20 |/* Strin|g-input |
|00000b30| 70 6f 69 6e 74 65 72 2e | 20 2a 2f 0d 73 74 61 74 |pointer.| */.stat|
|00000b40| 69 63 20 63 68 61 72 20 | 72 65 67 70 72 65 76 3b |ic char |regprev;|
|00000b50| 09 09 2f 2a 20 63 68 61 | 72 20 62 65 66 6f 72 65 |../* cha|r before|
|00000b60| 20 72 65 67 62 6f 6c 2c | 20 5c 6e 20 69 66 20 6e | regbol,| \n if n|
|00000b70| 6f 6e 65 20 2a 2f 0d 73 | 74 61 74 69 63 20 63 68 |one */.s|tatic ch|
|00000b80| 61 72 20 2a 72 65 67 62 | 6f 6c 3b 09 09 2f 2a 20 |ar *regb|ol;../* |
|00000b90| 42 65 67 69 6e 6e 69 6e | 67 20 6f 66 20 69 6e 70 |Beginnin|g of inp|
|00000ba0| 75 74 2c 20 66 6f 72 20 | 5e 20 63 68 65 63 6b 2e |ut, for |^ check.|
|00000bb0| 20 2a 2f 0d 73 74 61 74 | 69 63 20 63 68 61 72 20 | */.stat|ic char |
|00000bc0| 2a 72 65 67 65 6f 6c 3b | 09 09 2f 2a 20 45 6e 64 |*regeol;|../* End|
|00000bd0| 20 6f 66 20 69 6e 70 75 | 74 2c 20 66 6f 72 20 24 | of inpu|t, for $|
|00000be0| 20 63 68 65 63 6b 2e 20 | 2a 2f 0d 73 74 61 74 69 | check. |*/.stati|
|00000bf0| 63 20 63 68 61 72 20 2a | 2a 72 65 67 73 74 61 72 |c char *|*regstar|
|00000c00| 74 70 3b 09 2f 2a 20 50 | 6f 69 6e 74 65 72 20 74 |tp;./* P|ointer t|
|00000c10| 6f 20 73 74 61 72 74 70 | 20 61 72 72 61 79 2e 20 |o startp| array. |
|00000c20| 2a 2f 0d 73 74 61 74 69 | 63 20 63 68 61 72 20 2a |*/.stati|c char *|
|00000c30| 2a 72 65 67 65 6e 64 70 | 3b 09 09 2f 2a 20 44 69 |*regendp|;../* Di|
|00000c40| 74 74 6f 20 66 6f 72 20 | 65 6e 64 70 2e 20 2a 2f |tto for |endp. */|
|00000c50| 0d 73 74 61 74 69 63 20 | 63 68 61 72 20 2a 72 65 |.static |char *re|
|00000c60| 67 6c 61 73 74 70 61 72 | 65 6e 3b 09 2f 2a 20 53 |glastpar|en;./* S|
|00000c70| 69 6d 69 6c 61 72 6c 79 | 20 66 6f 72 20 6c 61 73 |imilarly| for las|
|00000c80| 74 70 61 72 65 6e 2e 20 | 2a 2f 0d 73 74 61 74 69 |tparen. |*/.stati|
|00000c90| 63 20 63 68 61 72 20 2a | 72 65 67 74 69 6c 6c 3b |c char *|regtill;|
|00000ca0| 0d 0d 73 74 61 74 69 63 | 20 69 6e 74 20 72 65 67 |..static| int reg|
|00000cb0| 6d 79 70 5f 73 69 7a 65 | 20 3d 20 30 3b 0d 73 74 |myp_size| = 0;.st|
|00000cc0| 61 74 69 63 20 63 68 61 | 72 20 2a 2a 72 65 67 6d |atic cha|r **regm|
|00000cd0| 79 73 74 61 72 74 70 20 | 3d 20 4e 75 6c 6c 28 63 |ystartp |= Null(c|
|00000ce0| 68 61 72 2a 2a 29 3b 0d | 73 74 61 74 69 63 20 63 |har**);.|static c|
|00000cf0| 68 61 72 20 2a 2a 72 65 | 67 6d 79 65 6e 64 70 20 |har **re|gmyendp |
|00000d00| 20 20 3d 20 4e 75 6c 6c | 28 63 68 61 72 2a 2a 29 | = Null|(char**)|
|00000d10| 3b 0d 0d 2f 2a 0d 20 2a | 20 46 6f 72 77 61 72 64 |;../*. *| Forward|
|00000d20| 73 2e 0d 20 2a 2f 0d 53 | 54 41 54 49 43 20 69 6e |s.. */.S|TATIC in|
|00000d30| 74 20 72 65 67 74 72 79 | 28 29 3b 0d 53 54 41 54 |t regtry|();.STAT|
|00000d40| 49 43 20 69 6e 74 20 72 | 65 67 6d 61 74 63 68 28 |IC int r|egmatch(|
|00000d50| 29 3b 0d 53 54 41 54 49 | 43 20 69 6e 74 20 72 65 |);.STATI|C int re|
|00000d60| 67 72 65 70 65 61 74 28 | 29 3b 0d 0d 65 78 74 65 |grepeat(|);..exte|
|00000d70| 72 6e 20 69 6e 74 20 6d | 75 6c 74 69 6c 69 6e 65 |rn int m|ultiline|
|00000d80| 3b 0d 0d 2f 2a 0d 20 2d | 20 72 65 67 65 78 65 63 |;../*. -| regexec|
|00000d90| 20 2d 20 6d 61 74 63 68 | 20 61 20 72 65 67 65 78 | - match| a regex|
|00000da0| 70 20 61 67 61 69 6e 73 | 74 20 61 20 73 74 72 69 |p agains|t a stri|
|00000db0| 6e 67 0d 20 2a 2f 0d 69 | 6e 74 0d 72 65 67 65 78 |ng. */.i|nt.regex|
|00000dc0| 65 63 28 70 72 6f 67 2c | 20 73 74 72 69 6e 67 61 |ec(prog,| stringa|
|00000dd0| 72 67 2c 20 73 74 72 65 | 6e 64 2c 20 73 74 72 62 |rg, stre|nd, strb|
|00000de0| 65 67 2c 20 6d 69 6e 65 | 6e 64 2c 20 73 63 72 65 |eg, mine|nd, scre|
|00000df0| 61 6d 65 72 2c 20 73 61 | 66 65 62 61 73 65 29 0d |amer, sa|febase).|
|00000e00| 72 65 67 69 73 74 65 72 | 20 72 65 67 65 78 70 20 |register| regexp |
|00000e10| 2a 70 72 6f 67 3b 0d 63 | 68 61 72 20 2a 73 74 72 |*prog;.c|har *str|
|00000e20| 69 6e 67 61 72 67 3b 0d | 72 65 67 69 73 74 65 72 |ingarg;.|register|
|00000e30| 20 63 68 61 72 20 2a 73 | 74 72 65 6e 64 3b 09 2f | char *s|trend;./|
|00000e40| 2a 20 70 6f 69 6e 74 65 | 72 20 74 6f 20 6e 75 6c |* pointe|r to nul|
|00000e50| 6c 20 61 74 20 65 6e 64 | 20 6f 66 20 73 74 72 69 |l at end| of stri|
|00000e60| 6e 67 20 2a 2f 0d 63 68 | 61 72 20 2a 73 74 72 62 |ng */.ch|ar *strb|
|00000e70| 65 67 3b 09 2f 2a 20 72 | 65 61 6c 20 62 65 67 69 |eg;./* r|eal begi|
|00000e80| 6e 6e 69 6e 67 20 6f 66 | 20 73 74 72 69 6e 67 20 |nning of| string |
|00000e90| 2a 2f 0d 69 6e 74 20 6d | 69 6e 65 6e 64 3b 09 2f |*/.int m|inend;./|
|00000ea0| 2a 20 65 6e 64 20 6f 66 | 20 6d 61 74 63 68 20 6d |* end of| match m|
|00000eb0| 75 73 74 20 62 65 20 61 | 74 20 6c 65 61 73 74 20 |ust be a|t least |
|00000ec0| 6d 69 6e 65 6e 64 20 61 | 66 74 65 72 20 73 74 72 |minend a|fter str|
|00000ed0| 69 6e 67 61 72 67 20 2a | 2f 0d 53 54 52 20 2a 73 |ingarg *|/.STR *s|
|00000ee0| 63 72 65 61 6d 65 72 3b | 0d 69 6e 74 20 73 61 66 |creamer;|.int saf|
|00000ef0| 65 62 61 73 65 3b 09 2f | 2a 20 6e 6f 20 6e 65 65 |ebase;./|* no nee|
|00000f00| 64 20 74 6f 20 72 65 6d | 65 6d 62 65 72 20 73 74 |d to rem|ember st|
|00000f10| 72 69 6e 67 20 69 6e 20 | 73 75 62 62 61 73 65 20 |ring in |subbase |
|00000f20| 2a 2f 0d 7b 0d 09 72 65 | 67 69 73 74 65 72 20 63 |*/.{..re|gister c|
|00000f30| 68 61 72 20 2a 73 3b 0d | 09 72 65 67 69 73 74 65 |har *s;.|.registe|
|00000f40| 72 20 69 6e 74 20 69 3b | 0d 09 72 65 67 69 73 74 |r int i;|..regist|
|00000f50| 65 72 20 63 68 61 72 20 | 2a 63 3b 0d 09 72 65 67 |er char |*c;..reg|
|00000f60| 69 73 74 65 72 20 63 68 | 61 72 20 2a 73 74 72 69 |ister ch|ar *stri|
|00000f70| 6e 67 20 3d 20 73 74 72 | 69 6e 67 61 72 67 3b 0d |ng = str|ingarg;.|
|00000f80| 09 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 74 6d |.registe|r int tm|
|00000f90| 70 3b 0d 09 69 6e 74 20 | 6d 69 6e 6c 65 6e 20 3d |p;..int |minlen =|
|00000fa0| 20 30 3b 09 09 2f 2a 20 | 6d 75 73 74 20 6d 61 74 | 0;../* |must mat|
|00000fb0| 63 68 20 61 74 20 6c 65 | 61 73 74 20 74 68 69 73 |ch at le|ast this|
|00000fc0| 20 6d 61 6e 79 20 63 68 | 61 72 73 20 2a 2f 0d 09 | many ch|ars */..|
|00000fd0| 69 6e 74 20 64 6f 6e 74 | 62 6f 74 68 65 72 20 3d |int dont|bother =|
|00000fe0| 20 30 3b 09 2f 2a 20 68 | 6f 77 20 6d 61 6e 79 20 | 0;./* h|ow many |
|00000ff0| 63 68 61 72 61 63 74 65 | 72 73 20 6e 6f 74 20 74 |characte|rs not t|
|00001000| 6f 20 74 72 79 20 61 74 | 20 65 6e 64 20 2a 2f 0d |o try at| end */.|
|00001010| 0d 09 2f 2a 20 42 65 20 | 70 61 72 61 6e 6f 69 64 |../* Be |paranoid|
|00001020| 2e 2e 2e 20 2a 2f 0d 09 | 69 66 20 28 70 72 6f 67 |... */..|if (prog|
|00001030| 20 3d 3d 20 4e 55 4c 4c | 20 7c 7c 20 73 74 72 69 | == NULL| || stri|
|00001040| 6e 67 20 3d 3d 20 4e 55 | 4c 4c 29 20 7b 0d 09 09 |ng == NU|LL) {...|
|00001050| 66 61 74 61 6c 28 22 4e | 55 4c 4c 20 72 65 67 65 |fatal("N|ULL rege|
|00001060| 78 70 20 70 61 72 61 6d | 65 74 65 72 22 29 3b 0d |xp param|eter");.|
|00001070| 09 09 72 65 74 75 72 6e | 28 30 29 3b 0d 09 7d 0d |..return|(0);..}.|
|00001080| 0d 09 69 66 20 28 73 74 | 72 69 6e 67 20 3d 3d 20 |..if (st|ring == |
|00001090| 73 74 72 62 65 67 29 09 | 2f 2a 20 69 73 20 5e 20 |strbeg).|/* is ^ |
|000010a0| 76 61 6c 69 64 20 61 74 | 20 73 74 72 69 6e 67 61 |valid at| stringa|
|000010b0| 72 67 3f 20 2a 2f 0d 09 | 20 20 20 20 72 65 67 70 |rg? */..| regp|
|000010c0| 72 65 76 20 3d 20 27 5c | 6e 27 3b 0d 09 65 6c 73 |rev = '\|n';..els|
|000010d0| 65 20 7b 0d 09 20 20 20 | 20 72 65 67 70 72 65 76 |e {.. | regprev|
|000010e0| 20 3d 20 73 74 72 69 6e | 67 61 72 67 5b 2d 31 5d | = strin|garg[-1]|
|000010f0| 3b 0d 09 20 20 20 20 69 | 66 20 28 21 6d 75 6c 74 |;.. i|f (!mult|
|00001100| 69 6c 69 6e 65 20 26 26 | 20 72 65 67 70 72 65 76 |iline &&| regprev|
|00001110| 20 3d 3d 20 27 5c 6e 27 | 29 0d 09 09 72 65 67 70 | == '\n'|)...regp|
|00001120| 72 65 76 20 3d 20 27 5c | 30 27 3b 09 09 2f 2a 20 |rev = '\|0';../* |
|00001130| 66 6f 72 63 65 20 5e 20 | 74 6f 20 4e 4f 54 20 6d |force ^ |to NOT m|
|00001140| 61 74 63 68 20 2a 2f 0d | 09 7d 0d 09 72 65 67 70 |atch */.|.}..regp|
|00001150| 72 65 63 6f 6d 70 20 3d | 20 70 72 6f 67 2d 3e 70 |recomp =| prog->p|
|00001160| 72 65 63 6f 6d 70 3b 0d | 09 2f 2a 20 43 68 65 63 |recomp;.|./* Chec|
|00001170| 6b 20 76 61 6c 69 64 69 | 74 79 20 6f 66 20 70 72 |k validi|ty of pr|
|00001180| 6f 67 72 61 6d 2e 20 2a | 2f 0d 09 69 66 20 28 55 |ogram. *|/..if (U|
|00001190| 43 48 41 52 41 54 28 70 | 72 6f 67 2d 3e 70 72 6f |CHARAT(p|rog->pro|
|000011a0| 67 72 61 6d 29 20 21 3d | 20 4d 41 47 49 43 29 20 |gram) !=| MAGIC) |
|000011b0| 7b 0d 09 09 46 41 49 4c | 28 22 63 6f 72 72 75 70 |{...FAIL|("corrup|
|000011c0| 74 65 64 20 72 65 67 65 | 78 70 20 70 72 6f 67 72 |ted rege|xp progr|
|000011d0| 61 6d 22 29 3b 0d 09 7d | 0d 0d 09 69 66 20 28 70 |am");..}|...if (p|
|000011e0| 72 6f 67 2d 3e 64 6f 5f | 66 6f 6c 64 69 6e 67 29 |rog->do_|folding)|
|000011f0| 20 7b 0d 09 09 69 20 3d | 20 73 74 72 65 6e 64 20 | {...i =| strend |
|00001200| 2d 20 73 74 72 69 6e 67 | 3b 0d 09 09 4e 65 77 28 |- string|;...New(|
|00001210| 31 31 30 31 2c 63 2c 69 | 2b 31 2c 63 68 61 72 29 |1101,c,i|+1,char)|
|00001220| 3b 0d 09 09 43 6f 70 79 | 28 73 74 72 69 6e 67 2c |;...Copy|(string,|
|00001230| 20 63 2c 20 69 2b 31 2c | 20 63 68 61 72 29 3b 0d | c, i+1,| char);.|
|00001240| 09 09 73 74 72 69 6e 67 | 20 3d 20 63 3b 0d 09 09 |..string| = c;...|
|00001250| 73 74 72 65 6e 64 20 3d | 20 73 74 72 69 6e 67 20 |strend =| string |
|00001260| 2b 20 69 3b 0d 09 09 66 | 6f 72 20 28 73 20 3d 20 |+ i;...f|or (s = |
|00001270| 73 74 72 69 6e 67 3b 20 | 73 20 3c 20 73 74 72 65 |string; |s < stre|
|00001280| 6e 64 3b 20 73 2b 2b 29 | 0d 09 09 09 69 66 20 28 |nd; s++)|....if (|
|00001290| 69 73 55 50 50 45 52 28 | 2a 73 29 29 0d 09 09 09 |isUPPER(|*s))....|
|000012a0| 09 2a 73 20 3d 20 74 6f | 6c 6f 77 65 72 28 2a 73 |.*s = to|lower(*s|
|000012b0| 29 3b 0d 09 7d 0d 0d 09 | 2f 2a 20 49 66 20 74 68 |);..}...|/* If th|
|000012c0| 65 72 65 20 69 73 20 61 | 20 22 6d 75 73 74 20 61 |ere is a| "must a|
|000012d0| 70 70 65 61 72 22 20 73 | 74 72 69 6e 67 2c 20 6c |ppear" s|tring, l|
|000012e0| 6f 6f 6b 20 66 6f 72 20 | 69 74 2e 20 2a 2f 0d 09 |ook for |it. */..|
|000012f0| 73 20 3d 20 73 74 72 69 | 6e 67 3b 0d 09 69 66 20 |s = stri|ng;..if |
|00001300| 28 70 72 6f 67 2d 3e 72 | 65 67 6d 75 73 74 20 21 |(prog->r|egmust !|
|00001310| 3d 20 4e 75 6c 6c 73 74 | 72 20 26 26 0d 09 20 20 |= Nullst|r &&.. |
|00001320| 20 20 28 21 28 70 72 6f | 67 2d 3e 72 65 67 61 6e | (!(pro|g->regan|
|00001330| 63 68 20 26 20 52 4f 50 | 54 5f 41 4e 43 48 29 0d |ch & ROP|T_ANCH).|
|00001340| 09 20 20 20 20 20 7c 7c | 20 28 6d 75 6c 74 69 6c |. ||| (multil|
|00001350| 69 6e 65 20 26 26 20 70 | 72 6f 67 2d 3e 72 65 67 |ine && p|rog->reg|
|00001360| 62 61 63 6b 20 3e 3d 20 | 30 29 29 20 29 20 7b 0d |back >= |0)) ) {.|
|00001370| 09 09 69 66 20 28 73 74 | 72 69 6e 67 61 72 67 20 |..if (st|ringarg |
|00001380| 3d 3d 20 73 74 72 62 65 | 67 20 26 26 20 73 63 72 |== strbe|g && scr|
|00001390| 65 61 6d 65 72 29 20 7b | 0d 09 09 09 69 66 20 28 |eamer) {|....if (|
|000013a0| 73 63 72 65 61 6d 66 69 | 72 73 74 5b 70 72 6f 67 |screamfi|rst[prog|
|000013b0| 2d 3e 72 65 67 6d 75 73 | 74 2d 3e 73 74 72 5f 72 |->regmus|t->str_r|
|000013c0| 61 72 65 5d 20 3e 3d 20 | 30 29 0d 09 09 09 09 73 |are] >= |0).....s|
|000013d0| 20 3d 20 73 63 72 65 61 | 6d 69 6e 73 74 72 28 73 | = screa|minstr(s|
|000013e0| 63 72 65 61 6d 65 72 2c | 70 72 6f 67 2d 3e 72 65 |creamer,|prog->re|
|000013f0| 67 6d 75 73 74 29 3b 0d | 09 09 09 65 6c 73 65 0d |gmust);.|...else.|
|00001400| 09 09 09 09 73 20 3d 20 | 4e 75 6c 6c 63 68 3b 0d |....s = |Nullch;.|
|00001410| 09 09 7d 0d 23 69 66 6e | 64 65 66 20 6c 69 6e 74 |..}.#ifn|def lint|
|00001420| 0d 09 09 65 6c 73 65 0d | 09 09 09 73 20 3d 20 66 |...else.|...s = f|
|00001430| 62 6d 69 6e 73 74 72 28 | 28 75 6e 73 69 67 6e 65 |bminstr(|(unsigne|
|00001440| 64 20 63 68 61 72 2a 29 | 73 2c 20 28 75 6e 73 69 |d char*)|s, (unsi|
|00001450| 67 6e 65 64 20 63 68 61 | 72 2a 29 73 74 72 65 6e |gned cha|r*)stren|
|00001460| 64 2c 0d 09 09 09 20 20 | 20 20 70 72 6f 67 2d 3e |d,.... | prog->|
|00001470| 72 65 67 6d 75 73 74 29 | 3b 0d 23 65 6e 64 69 66 |regmust)|;.#endif|
|00001480| 0d 09 09 69 66 20 28 21 | 73 29 20 7b 0d 09 09 09 |...if (!|s) {....|
|00001490| 2b 2b 70 72 6f 67 2d 3e | 72 65 67 6d 75 73 74 2d |++prog->|regmust-|
|000014a0| 3e 73 74 72 5f 75 2e 73 | 74 72 5f 75 73 65 66 75 |>str_u.s|tr_usefu|
|000014b0| 6c 3b 09 2f 2a 20 68 6f | 6f 72 61 79 20 2a 2f 0d |l;./* ho|oray */.|
|000014c0| 09 09 09 67 6f 74 6f 20 | 70 68 6f 6f 65 79 3b 09 |...goto |phooey;.|
|000014d0| 2f 2a 20 6e 6f 74 20 70 | 72 65 73 65 6e 74 20 2a |/* not p|resent *|
|000014e0| 2f 0d 09 09 7d 0d 09 09 | 65 6c 73 65 20 69 66 20 |/...}...|else if |
|000014f0| 28 70 72 6f 67 2d 3e 72 | 65 67 62 61 63 6b 20 3e |(prog->r|egback >|
|00001500| 3d 20 30 29 20 7b 0d 09 | 09 09 73 20 2d 3d 20 70 |= 0) {..|..s -= p|
|00001510| 72 6f 67 2d 3e 72 65 67 | 62 61 63 6b 3b 0d 09 09 |rog->reg|back;...|
|00001520| 09 69 66 20 28 73 20 3c | 20 73 74 72 69 6e 67 29 |.if (s <| string)|
|00001530| 0d 09 09 09 20 20 20 20 | 73 20 3d 20 73 74 72 69 |.... |s = stri|
|00001540| 6e 67 3b 0d 09 09 09 6d | 69 6e 6c 65 6e 20 3d 20 |ng;....m|inlen = |
|00001550| 70 72 6f 67 2d 3e 72 65 | 67 62 61 63 6b 20 2b 20 |prog->re|gback + |
|00001560| 70 72 6f 67 2d 3e 72 65 | 67 6d 75 73 74 2d 3e 73 |prog->re|gmust->s|
|00001570| 74 72 5f 63 75 72 3b 0d | 09 09 7d 0d 09 09 65 6c |tr_cur;.|..}...el|
|00001580| 73 65 20 69 66 20 28 2d | 2d 70 72 6f 67 2d 3e 72 |se if (-|-prog->r|
|00001590| 65 67 6d 75 73 74 2d 3e | 73 74 72 5f 75 2e 73 74 |egmust->|str_u.st|
|000015a0| 72 5f 75 73 65 66 75 6c | 20 3c 20 30 29 20 7b 20 |r_useful| < 0) { |
|000015b0| 2f 2a 20 62 6f 6f 20 2a | 2f 0d 09 09 09 73 74 72 |/* boo *|/....str|
|000015c0| 5f 66 72 65 65 28 70 72 | 6f 67 2d 3e 72 65 67 6d |_free(pr|og->regm|
|000015d0| 75 73 74 29 3b 0d 09 09 | 09 70 72 6f 67 2d 3e 72 |ust);...|.prog->r|
|000015e0| 65 67 6d 75 73 74 20 3d | 20 4e 75 6c 6c 73 74 72 |egmust =| Nullstr|
|000015f0| 3b 09 2f 2a 20 64 69 73 | 61 62 6c 65 20 72 65 67 |;./* dis|able reg|
|00001600| 6d 75 73 74 20 2a 2f 0d | 09 09 09 73 20 3d 20 73 |must */.|...s = s|
|00001610| 74 72 69 6e 67 3b 0d 09 | 09 7d 0d 09 09 65 6c 73 |tring;..|.}...els|
|00001620| 65 20 7b 0d 09 09 09 73 | 20 3d 20 73 74 72 69 6e |e {....s| = strin|
|00001630| 67 3b 0d 09 09 09 6d 69 | 6e 6c 65 6e 20 3d 20 70 |g;....mi|nlen = p|
|00001640| 72 6f 67 2d 3e 72 65 67 | 6d 75 73 74 2d 3e 73 74 |rog->reg|must->st|
|00001650| 72 5f 63 75 72 3b 0d 09 | 09 7d 0d 09 7d 0d 0d 09 |r_cur;..|.}..}...|
|00001660| 2f 2a 20 4d 61 72 6b 20 | 62 65 67 69 6e 6e 69 6e |/* Mark |beginnin|
|00001670| 67 20 6f 66 20 6c 69 6e | 65 20 66 6f 72 20 5e 20 |g of lin|e for ^ |
|00001680| 2e 20 2a 2f 0d 09 72 65 | 67 62 6f 6c 20 3d 20 73 |. */..re|gbol = s|
|00001690| 74 72 69 6e 67 3b 0d 0d | 09 2f 2a 20 4d 61 72 6b |tring;..|./* Mark|
|000016a0| 20 65 6e 64 20 6f 66 20 | 6c 69 6e 65 20 66 6f 72 | end of |line for|
|000016b0| 20 24 20 28 61 6e 64 20 | 73 75 63 68 29 20 2a 2f | $ (and |such) */|
|000016c0| 0d 09 72 65 67 65 6f 6c | 20 3d 20 73 74 72 65 6e |..regeol| = stren|
|000016d0| 64 3b 0d 0d 09 2f 2a 20 | 73 65 65 20 68 6f 77 20 |d;.../* |see how |
|000016e0| 66 61 72 20 77 65 20 68 | 61 76 65 20 74 6f 20 67 |far we h|ave to g|
|000016f0| 65 74 20 74 6f 20 6e 6f | 74 20 6d 61 74 63 68 20 |et to no|t match |
|00001700| 77 68 65 72 65 20 77 65 | 20 6d 61 74 63 68 65 64 |where we| matched|
|00001710| 20 62 65 66 6f 72 65 20 | 2a 2f 0d 09 72 65 67 74 | before |*/..regt|
|00001720| 69 6c 6c 20 3d 20 73 74 | 72 69 6e 67 2b 6d 69 6e |ill = st|ring+min|
|00001730| 65 6e 64 3b 0d 0d 09 2f | 2a 20 41 6c 6c 6f 63 61 |end;.../|* Alloca|
|00001740| 74 65 20 6f 75 72 20 62 | 61 63 6b 72 65 66 65 72 |te our b|ackrefer|
|00001750| 65 6e 63 65 20 61 72 72 | 61 79 73 20 2a 2f 0d 09 |ence arr|ays */..|
|00001760| 69 66 20 28 20 72 65 67 | 6d 79 70 5f 73 69 7a 65 |if ( reg|myp_size|
|00001770| 20 3c 20 70 72 6f 67 2d | 3e 6e 70 61 72 65 6e 73 | < prog-|>nparens|
|00001780| 20 2b 20 31 20 29 20 7b | 0d 09 20 20 20 20 2f 2a | + 1 ) {|.. /*|
|00001790| 20 41 6c 6c 6f 63 61 74 | 65 20 6f 72 20 65 6e 6c | Allocat|e or enl|
|000017a0| 61 72 67 65 20 74 68 65 | 20 61 72 72 61 79 73 20 |arge the| arrays |
|000017b0| 2a 2f 0d 09 20 20 20 20 | 72 65 67 6d 79 70 5f 73 |*/.. |regmyp_s|
|000017c0| 69 7a 65 20 3d 20 70 72 | 6f 67 2d 3e 6e 70 61 72 |ize = pr|og->npar|
|000017d0| 65 6e 73 20 2b 20 31 3b | 0d 09 20 20 20 20 69 66 |ens + 1;|.. if|
|000017e0| 20 28 20 72 65 67 6d 79 | 70 5f 73 69 7a 65 20 3c | ( regmy|p_size <|
|000017f0| 20 31 30 20 29 20 72 65 | 67 6d 79 70 5f 73 69 7a | 10 ) re|gmyp_siz|
|00001800| 65 20 3d 20 31 30 3b 09 | 2f 2a 20 6d 69 6e 69 6d |e = 10;.|/* minim|
|00001810| 75 6d 20 2a 2f 0d 09 20 | 20 20 20 69 66 20 28 20 |um */.. | if ( |
|00001820| 72 65 67 6d 79 73 74 61 | 72 74 70 20 29 20 7b 0d |regmysta|rtp ) {.|
|00001830| 09 09 2f 2a 20 72 65 61 | 6c 6c 6f 63 61 74 65 20 |../* rea|llocate |
|00001840| 6c 61 72 67 65 72 20 2a | 2f 0d 09 09 52 65 6e 65 |larger *|/...Rene|
|00001850| 77 28 72 65 67 6d 79 73 | 74 61 72 74 70 2c 72 65 |w(regmys|tartp,re|
|00001860| 67 6d 79 70 5f 73 69 7a | 65 2c 63 68 61 72 2a 29 |gmyp_siz|e,char*)|
|00001870| 3b 0d 09 09 52 65 6e 65 | 77 28 72 65 67 6d 79 65 |;...Rene|w(regmye|
|00001880| 6e 64 70 2c 20 20 72 65 | 67 6d 79 70 5f 73 69 7a |ndp, re|gmyp_siz|
|00001890| 65 2c 63 68 61 72 2a 29 | 3b 0d 09 20 20 20 20 7d |e,char*)|;.. }|
|000018a0| 0d 09 20 20 20 20 65 6c | 73 65 20 7b 0d 09 09 2f |.. el|se {.../|
|000018b0| 2a 20 49 6e 69 74 69 61 | 6c 20 61 6c 6c 6f 63 61 |* Initia|l alloca|
|000018c0| 74 69 6f 6e 20 2a 2f 0d | 09 09 4e 65 77 28 31 31 |tion */.|..New(11|
|000018d0| 30 32 2c 72 65 67 6d 79 | 73 74 61 72 74 70 2c 72 |02,regmy|startp,r|
|000018e0| 65 67 6d 79 70 5f 73 69 | 7a 65 2c 63 68 61 72 2a |egmyp_si|ze,char*|
|000018f0| 29 3b 0d 09 09 4e 65 77 | 28 31 31 30 32 2c 72 65 |);...New|(1102,re|
|00001900| 67 6d 79 65 6e 64 70 2c | 20 20 72 65 67 6d 79 70 |gmyendp,| regmyp|
|00001910| 5f 73 69 7a 65 2c 63 68 | 61 72 2a 29 3b 0d 09 20 |_size,ch|ar*);.. |
|00001920| 20 20 20 7d 0d 09 0d 09 | 7d 0d 0d 09 2f 2a 20 53 | }....|}.../* S|
|00001930| 69 6d 70 6c 65 73 74 20 | 63 61 73 65 3a 20 20 61 |implest |case: a|
|00001940| 6e 63 68 6f 72 65 64 20 | 6d 61 74 63 68 20 6e 65 |nchored |match ne|
|00001950| 65 64 20 62 65 20 74 72 | 69 65 64 20 6f 6e 6c 79 |ed be tr|ied only|
|00001960| 20 6f 6e 63 65 2e 20 2a | 2f 0d 09 2f 2a 20 20 5b | once. *|/../* [|
|00001970| 75 6e 6c 65 73 73 20 6d | 75 6c 74 69 6c 69 6e 65 |unless m|ultiline|
|00001980| 20 69 73 20 73 65 74 5d | 20 2a 2f 0d 09 69 66 20 | is set]| */..if |
|00001990| 28 70 72 6f 67 2d 3e 72 | 65 67 61 6e 63 68 20 26 |(prog->r|eganch &|
|000019a0| 20 52 4f 50 54 5f 41 4e | 43 48 29 20 7b 0d 09 09 | ROPT_AN|CH) {...|
|000019b0| 69 66 20 28 72 65 67 74 | 72 79 28 70 72 6f 67 2c |if (regt|ry(prog,|
|000019c0| 20 73 74 72 69 6e 67 29 | 29 0d 09 09 09 67 6f 74 | string)|)....got|
|000019d0| 6f 20 67 6f 74 5f 69 74 | 3b 0d 09 09 65 6c 73 65 |o got_it|;...else|
|000019e0| 20 69 66 20 28 6d 75 6c | 74 69 6c 69 6e 65 20 7c | if (mul|tiline ||
|000019f0| 7c 20 28 70 72 6f 67 2d | 3e 72 65 67 61 6e 63 68 || (prog-|>reganch|
|00001a00| 20 26 20 52 4f 50 54 5f | 49 4d 50 4c 49 43 49 54 | & ROPT_|IMPLICIT|
|00001a10| 29 29 20 7b 0d 09 09 09 | 69 66 20 28 6d 69 6e 6c |)) {....|if (minl|
|00001a20| 65 6e 29 0d 09 09 09 20 | 20 20 20 64 6f 6e 74 62 |en).... | dontb|
|00001a30| 6f 74 68 65 72 20 3d 20 | 6d 69 6e 6c 65 6e 20 2d |other = |minlen -|
|00001a40| 20 31 3b 0d 09 09 09 73 | 74 72 65 6e 64 20 2d 3d | 1;....s|trend -=|
|00001a50| 20 64 6f 6e 74 62 6f 74 | 68 65 72 3b 0d 09 09 09 | dontbot|her;....|
|00001a60| 2f 2a 20 66 6f 72 20 6d | 75 6c 74 69 6c 69 6e 65 |/* for m|ultiline|
|00001a70| 20 77 65 20 6f 6e 6c 79 | 20 68 61 76 65 20 74 6f | we only| have to|
|00001a80| 20 74 72 79 20 61 66 74 | 65 72 20 6e 65 77 6c 69 | try aft|er newli|
|00001a90| 6e 65 73 20 2a 2f 0d 09 | 09 09 69 66 20 28 73 20 |nes */..|..if (s |
|00001aa0| 3e 20 73 74 72 69 6e 67 | 29 0d 09 09 09 20 20 20 |> string|).... |
|00001ab0| 20 73 2d 2d 3b 0d 09 09 | 09 77 68 69 6c 65 20 28 | s--;...|.while (|
|00001ac0| 73 20 3c 20 73 74 72 65 | 6e 64 29 20 7b 0d 09 09 |s < stre|nd) {...|
|00001ad0| 09 20 20 20 20 69 66 20 | 28 2a 73 2b 2b 20 3d 3d |. if |(*s++ ==|
|00001ae0| 20 27 5c 6e 27 29 20 7b | 0d 09 09 09 09 69 66 20 | '\n') {|.....if |
|00001af0| 28 73 20 3c 20 73 74 72 | 65 6e 64 20 26 26 20 72 |(s < str|end && r|
|00001b00| 65 67 74 72 79 28 70 72 | 6f 67 2c 20 73 29 29 0d |egtry(pr|og, s)).|
|00001b10| 09 09 09 09 20 20 20 20 | 67 6f 74 6f 20 67 6f 74 |.... |goto got|
|00001b20| 5f 69 74 3b 0d 09 09 09 | 20 20 20 20 7d 0d 09 09 |_it;....| }...|
|00001b30| 09 7d 0d 09 09 7d 0d 09 | 09 67 6f 74 6f 20 70 68 |.}...}..|.goto ph|
|00001b40| 6f 6f 65 79 3b 0d 09 7d | 0d 0d 09 2f 2a 20 4d 65 |ooey;..}|.../* Me|
|00001b50| 73 73 79 20 63 61 73 65 | 73 3a 20 20 75 6e 61 6e |ssy case|s: unan|
|00001b60| 63 68 6f 72 65 64 20 6d | 61 74 63 68 2e 20 2a 2f |chored m|atch. */|
|00001b70| 0d 09 69 66 20 28 70 72 | 6f 67 2d 3e 72 65 67 73 |..if (pr|og->regs|
|00001b80| 74 61 72 74 29 20 7b 0d | 09 09 69 66 20 28 70 72 |tart) {.|..if (pr|
|00001b90| 6f 67 2d 3e 72 65 67 61 | 6e 63 68 20 26 20 52 4f |og->rega|nch & RO|
|00001ba0| 50 54 5f 53 4b 49 50 29 | 20 7b 20 20 2f 2a 20 77 |PT_SKIP)| { /* w|
|00001bb0| 65 20 68 61 76 65 20 2f | 78 2b 77 68 61 74 65 76 |e have /|x+whatev|
|00001bc0| 65 72 2f 20 2a 2f 0d 09 | 09 20 20 20 20 2f 2a 20 |er/ */..|. /* |
|00001bd0| 69 74 20 6d 75 73 74 20 | 62 65 20 61 20 6f 6e 65 |it must |be a one|
|00001be0| 20 63 68 61 72 61 63 74 | 65 72 20 73 74 72 69 6e | charact|er strin|
|00001bf0| 67 20 2a 2f 0d 09 09 20 | 20 20 20 69 20 3d 20 70 |g */... | i = p|
|00001c00| 72 6f 67 2d 3e 72 65 67 | 73 74 61 72 74 2d 3e 73 |rog->reg|start->s|
|00001c10| 74 72 5f 70 74 72 5b 30 | 5d 3b 0d 09 09 20 20 20 |tr_ptr[0|];... |
|00001c20| 20 77 68 69 6c 65 20 28 | 73 20 3c 20 73 74 72 65 | while (|s < stre|
|00001c30| 6e 64 29 20 7b 0d 09 09 | 09 20 20 20 20 69 66 20 |nd) {...|. if |
|00001c40| 28 2a 73 20 3d 3d 20 69 | 29 20 7b 0d 09 09 09 09 |(*s == i|) {.....|
|00001c50| 20 20 20 20 69 66 20 28 | 72 65 67 74 72 79 28 70 | if (|regtry(p|
|00001c60| 72 6f 67 2c 20 73 29 29 | 0d 09 09 09 09 09 20 20 |rog, s))|...... |
|00001c70| 20 20 67 6f 74 6f 20 67 | 6f 74 5f 69 74 3b 0d 09 | goto g|ot_it;..|
|00001c80| 09 09 09 20 20 20 20 73 | 2b 2b 3b 0d 09 09 09 09 |... s|++;.....|
|00001c90| 20 20 20 20 77 68 69 6c | 65 20 28 73 20 3c 20 73 | whil|e (s < s|
|00001ca0| 74 72 65 6e 64 20 26 26 | 20 2a 73 20 3d 3d 20 69 |trend &&| *s == i|
|00001cb0| 29 0d 09 09 09 09 09 73 | 2b 2b 3b 0d 09 09 09 20 |)......s|++;.... |
|00001cc0| 20 20 20 7d 0d 09 09 09 | 20 20 20 20 73 2b 2b 3b | }....| s++;|
|00001cd0| 0d 09 09 20 20 20 20 7d | 0d 09 09 7d 0d 09 09 65 |... }|...}...e|
|00001ce0| 6c 73 65 20 69 66 20 28 | 70 72 6f 67 2d 3e 72 65 |lse if (|prog->re|
|00001cf0| 67 73 74 61 72 74 2d 3e | 73 74 72 5f 70 6f 6b 20 |gstart->|str_pok |
|00001d00| 3d 3d 20 33 29 20 7b 0d | 09 09 20 20 20 20 2f 2a |== 3) {.|.. /*|
|00001d10| 20 57 65 20 6b 6e 6f 77 | 20 77 68 61 74 20 73 74 | We know| what st|
|00001d20| 72 69 6e 67 20 69 74 20 | 6d 75 73 74 20 73 74 61 |ring it |must sta|
|00001d30| 72 74 20 77 69 74 68 2e | 20 2a 2f 0d 23 69 66 6e |rt with.| */.#ifn|
|00001d40| 64 65 66 20 6c 69 6e 74 | 0d 09 09 20 20 20 20 77 |def lint|... w|
|00001d50| 68 69 6c 65 20 28 28 73 | 20 3d 20 66 62 6d 69 6e |hile ((s| = fbmin|
|00001d60| 73 74 72 28 28 75 6e 73 | 69 67 6e 65 64 20 63 68 |str((uns|igned ch|
|00001d70| 61 72 2a 29 73 2c 0d 09 | 09 20 20 20 20 20 20 28 |ar*)s,..|. (|
|00001d80| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 2a 29 73 |unsigned| char*)s|
|00001d90| 74 72 65 6e 64 2c 20 70 | 72 6f 67 2d 3e 72 65 67 |trend, p|rog->reg|
|00001da0| 73 74 61 72 74 29 29 20 | 21 3d 20 4e 55 4c 4c 29 |start)) |!= NULL)|
|00001db0| 0d 23 65 6c 73 65 0d 09 | 09 20 20 20 20 77 68 69 |.#else..|. whi|
|00001dc0| 6c 65 20 28 73 20 3d 20 | 4e 75 6c 6c 63 68 29 0d |le (s = |Nullch).|
|00001dd0| 23 65 6e 64 69 66 0d 09 | 09 20 20 20 20 7b 0d 09 |#endif..|. {..|
|00001de0| 09 09 20 20 20 20 69 66 | 20 28 72 65 67 74 72 79 |.. if| (regtry|
|00001df0| 28 70 72 6f 67 2c 20 73 | 29 29 0d 09 09 09 09 20 |(prog, s|))..... |
|00001e00| 20 20 20 67 6f 74 6f 20 | 67 6f 74 5f 69 74 3b 0d | goto |got_it;.|
|00001e10| 09 09 09 20 20 20 20 73 | 2b 2b 3b 0d 09 09 20 20 |... s|++;... |
|00001e20| 20 20 7d 0d 09 09 7d 0d | 09 09 65 6c 73 65 20 7b | }...}.|..else {|
|00001e30| 0d 09 09 20 20 20 20 63 | 20 3d 20 70 72 6f 67 2d |... c| = prog-|
|00001e40| 3e 72 65 67 73 74 61 72 | 74 2d 3e 73 74 72 5f 70 |>regstar|t->str_p|
|00001e50| 74 72 3b 0d 09 09 20 20 | 20 20 77 68 69 6c 65 20 |tr;... | while |
|00001e60| 28 28 73 20 3d 20 6e 69 | 6e 73 74 72 28 73 2c 20 |((s = ni|nstr(s, |
|00001e70| 73 74 72 65 6e 64 2c 0d | 09 09 20 20 20 20 20 20 |strend,.|.. |
|00001e80| 63 2c 20 63 20 2b 20 70 | 72 6f 67 2d 3e 72 65 67 |c, c + p|rog->reg|
|00001e90| 73 74 61 72 74 2d 3e 73 | 74 72 5f 63 75 72 20 29 |start->s|tr_cur )|
|00001ea0| 29 20 21 3d 20 4e 55 4c | 4c 29 20 7b 0d 09 09 09 |) != NUL|L) {....|
|00001eb0| 20 20 20 20 69 66 20 28 | 72 65 67 74 72 79 28 70 | if (|regtry(p|
|00001ec0| 72 6f 67 2c 20 73 29 29 | 0d 09 09 09 09 20 20 20 |rog, s))|..... |
|00001ed0| 20 67 6f 74 6f 20 67 6f | 74 5f 69 74 3b 0d 09 09 | goto go|t_it;...|
|00001ee0| 09 20 20 20 20 73 2b 2b | 3b 0d 09 09 20 20 20 20 |. s++|;... |
|00001ef0| 7d 0d 09 09 7d 0d 09 09 | 67 6f 74 6f 20 70 68 6f |}...}...|goto pho|
|00001f00| 6f 65 79 3b 0d 09 7d 0d | 09 2f 2a 53 55 50 50 52 |oey;..}.|./*SUPPR|
|00001f10| 45 53 53 20 35 36 30 2a | 2f 0d 09 69 66 20 28 63 |ESS 560*|/..if (c|
|00001f20| 20 3d 20 70 72 6f 67 2d | 3e 72 65 67 73 74 63 6c | = prog-|>regstcl|
|00001f30| 61 73 73 29 20 7b 0d 09 | 09 69 6e 74 20 64 6f 65 |ass) {..|.int doe|
|00001f40| 76 65 72 79 20 3d 20 28 | 70 72 6f 67 2d 3e 72 65 |very = (|prog->re|
|00001f50| 67 61 6e 63 68 20 26 20 | 52 4f 50 54 5f 53 4b 49 |ganch & |ROPT_SKI|
|00001f60| 50 29 20 3d 3d 20 30 3b | 0d 0d 09 09 69 66 20 28 |P) == 0;|....if (|
|00001f70| 6d 69 6e 6c 65 6e 29 0d | 09 09 20 20 20 20 64 6f |minlen).|.. do|
|00001f80| 6e 74 62 6f 74 68 65 72 | 20 3d 20 6d 69 6e 6c 65 |ntbother| = minle|
|00001f90| 6e 20 2d 20 31 3b 0d 09 | 09 73 74 72 65 6e 64 20 |n - 1;..|.strend |
|00001fa0| 2d 3d 20 64 6f 6e 74 62 | 6f 74 68 65 72 3b 09 2f |-= dontb|other;./|
|00001fb0| 2a 20 64 6f 6e 27 74 20 | 62 6f 74 68 65 72 20 77 |* don't |bother w|
|00001fc0| 69 74 68 20 77 68 61 74 | 20 63 61 6e 27 74 20 6d |ith what| can't m|
|00001fd0| 61 74 63 68 20 2a 2f 0d | 09 09 74 6d 70 20 3d 20 |atch */.|..tmp = |
|00001fe0| 31 3b 0d 09 09 2f 2a 20 | 57 65 20 6b 6e 6f 77 20 |1;.../* |We know |
|00001ff0| 77 68 61 74 20 63 6c 61 | 73 73 20 69 74 20 6d 75 |what cla|ss it mu|
|00002000| 73 74 20 73 74 61 72 74 | 20 77 69 74 68 2e 20 2a |st start| with. *|
|00002010| 2f 0d 09 09 73 77 69 74 | 63 68 20 28 4f 50 28 63 |/...swit|ch (OP(c|
|00002020| 29 29 20 7b 0d 09 09 63 | 61 73 65 20 41 4e 59 4f |)) {...c|ase ANYO|
|00002030| 46 3a 0d 09 09 20 20 20 | 20 63 20 3d 20 4f 50 45 |F:... | c = OPE|
|00002040| 52 41 4e 44 28 63 29 3b | 0d 09 09 20 20 20 20 77 |RAND(c);|... w|
|00002050| 68 69 6c 65 20 28 73 20 | 3c 20 73 74 72 65 6e 64 |hile (s |< strend|
|00002060| 29 20 7b 0d 09 09 09 20 | 20 20 20 69 20 3d 20 55 |) {.... | i = U|
|00002070| 43 48 41 52 41 54 28 73 | 29 3b 0d 09 09 09 20 20 |CHARAT(s|);.... |
|00002080| 20 20 69 66 20 28 21 28 | 63 5b 69 20 3e 3e 20 33 | if (!(|c[i >> 3|
|00002090| 5d 20 26 20 28 31 20 3c | 3c 20 28 69 26 37 29 29 |] & (1 <|< (i&7))|
|000020a0| 29 29 20 7b 0d 09 09 09 | 09 20 20 20 20 69 66 20 |)) {....|. if |
|000020b0| 28 74 6d 70 20 26 26 20 | 72 65 67 74 72 79 28 70 |(tmp && |regtry(p|
|000020c0| 72 6f 67 2c 20 73 29 29 | 0d 09 09 09 09 09 20 20 |rog, s))|...... |
|000020d0| 20 20 67 6f 74 6f 20 67 | 6f 74 5f 69 74 3b 0d 09 | goto g|ot_it;..|
|000020e0| 09 09 09 20 20 20 20 65 | 6c 73 65 0d 09 09 09 09 |... e|lse.....|
|000020f0| 09 20 20 20 20 74 6d 70 | 20 3d 20 64 6f 65 76 65 |. tmp| = doeve|
|00002100| 72 79 3b 0d 09 09 09 20 | 20 20 20 7d 0d 09 09 09 |ry;.... | }....|
|00002110| 20 20 20 20 65 6c 73 65 | 0d 09 09 09 09 20 20 20 | else|..... |
|00002120| 20 74 6d 70 20 3d 20 31 | 3b 0d 09 09 09 20 20 20 | tmp = 1|;.... |
|00002130| 20 73 2b 2b 3b 0d 09 09 | 20 20 20 20 7d 0d 09 09 | s++;...| }...|
|00002140| 20 20 20 20 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 | brea|k;...cas|
|00002150| 65 20 42 4f 55 4e 44 3a | 0d 09 09 20 20 20 20 69 |e BOUND:|... i|
|00002160| 66 20 28 6d 69 6e 6c 65 | 6e 29 0d 09 09 09 64 6f |f (minle|n)....do|
|00002170| 6e 74 62 6f 74 68 65 72 | 2b 2b 2c 73 74 72 65 6e |ntbother|++,stren|
|00002180| 64 2d 2d 3b 0d 09 09 20 | 20 20 20 69 66 20 28 73 |d--;... | if (s|
|00002190| 20 21 3d 20 73 74 72 69 | 6e 67 29 20 7b 0d 09 09 | != stri|ng) {...|
|000021a0| 09 69 20 3d 20 73 5b 2d | 31 5d 3b 0d 09 09 09 74 |.i = s[-|1];....t|
|000021b0| 6d 70 20 3d 20 69 73 41 | 4c 4e 55 4d 28 69 29 3b |mp = isA|LNUM(i);|
|000021c0| 0d 09 09 20 20 20 20 7d | 0d 09 09 20 20 20 20 65 |... }|... e|
|000021d0| 6c 73 65 0d 09 09 09 74 | 6d 70 20 3d 20 69 73 41 |lse....t|mp = isA|
|000021e0| 4c 4e 55 4d 28 72 65 67 | 70 72 65 76 29 3b 09 2f |LNUM(reg|prev);./|
|000021f0| 2a 20 61 73 73 75 6d 65 | 20 6e 6f 74 20 61 6c 70 |* assume| not alp|
|00002200| 68 61 6e 75 6d 65 72 69 | 63 20 2a 2f 0d 09 09 20 |hanumeri|c */... |
|00002210| 20 20 20 77 68 69 6c 65 | 20 28 73 20 3c 20 73 74 | while| (s < st|
|00002220| 72 65 6e 64 29 20 7b 0d | 09 09 09 20 20 20 20 69 |rend) {.|... i|
|00002230| 20 3d 20 2a 73 3b 0d 09 | 09 09 20 20 20 20 69 66 | = *s;..|.. if|
|00002240| 20 28 74 6d 70 20 21 3d | 20 69 73 41 4c 4e 55 4d | (tmp !=| isALNUM|
|00002250| 28 69 29 29 20 7b 0d 09 | 09 09 09 20 20 20 20 74 |(i)) {..|... t|
|00002260| 6d 70 20 3d 20 21 74 6d | 70 3b 0d 09 09 09 09 20 |mp = !tm|p;..... |
|00002270| 20 20 20 69 66 20 28 72 | 65 67 74 72 79 28 70 72 | if (r|egtry(pr|
|00002280| 6f 67 2c 20 73 29 29 0d | 09 09 09 09 09 20 20 20 |og, s)).|..... |
|00002290| 20 67 6f 74 6f 20 67 6f | 74 5f 69 74 3b 0d 09 09 | goto go|t_it;...|
|000022a0| 09 20 20 20 20 7d 0d 09 | 09 09 20 20 20 20 73 2b |. }..|.. s+|
|000022b0| 2b 3b 0d 09 09 20 20 20 | 20 7d 0d 09 09 20 20 20 |+;... | }... |
|000022c0| 20 69 66 20 28 28 6d 69 | 6e 6c 65 6e 20 7c 7c 20 | if ((mi|nlen || |
|000022d0| 74 6d 70 29 20 26 26 20 | 72 65 67 74 72 79 28 70 |tmp) && |regtry(p|
|000022e0| 72 6f 67 2c 73 29 29 0d | 09 09 09 20 20 20 20 67 |rog,s)).|... g|
|000022f0| 6f 74 6f 20 67 6f 74 5f | 69 74 3b 0d 09 09 20 20 |oto got_|it;... |
|00002300| 20 20 62 72 65 61 6b 3b | 0d 09 09 63 61 73 65 20 | break;|...case |
|00002310| 4e 42 4f 55 4e 44 3a 0d | 09 09 20 20 20 20 69 66 |NBOUND:.|.. if|
|00002320| 20 28 6d 69 6e 6c 65 6e | 29 0d 09 09 09 64 6f 6e | (minlen|)....don|
|00002330| 74 62 6f 74 68 65 72 2b | 2b 2c 73 74 72 65 6e 64 |tbother+|+,strend|
|00002340| 2d 2d 3b 0d 09 09 20 20 | 20 20 69 66 20 28 73 20 |--;... | if (s |
|00002350| 21 3d 20 73 74 72 69 6e | 67 29 20 7b 0d 09 09 09 |!= strin|g) {....|
|00002360| 69 20 3d 20 73 5b 2d 31 | 5d 3b 0d 09 09 09 74 6d |i = s[-1|];....tm|
|00002370| 70 20 3d 20 69 73 41 4c | 4e 55 4d 28 69 29 3b 0d |p = isAL|NUM(i);.|
|00002380| 09 09 20 20 20 20 7d 0d | 09 09 20 20 20 20 65 6c |.. }.|.. el|
|00002390| 73 65 0d 09 09 09 74 6d | 70 20 3d 20 69 73 41 4c |se....tm|p = isAL|
|000023a0| 4e 55 4d 28 72 65 67 70 | 72 65 76 29 3b 09 2f 2a |NUM(regp|rev);./*|
|000023b0| 20 61 73 73 75 6d 65 20 | 6e 6f 74 20 61 6c 70 68 | assume |not alph|
|000023c0| 61 6e 75 6d 65 72 69 63 | 20 2a 2f 0d 09 09 20 20 |anumeric| */... |
|000023d0| 20 20 77 68 69 6c 65 20 | 28 73 20 3c 20 73 74 72 | while |(s < str|
|000023e0| 65 6e 64 29 20 7b 0d 09 | 09 09 20 20 20 20 69 20 |end) {..|.. i |
|000023f0| 3d 20 2a 73 3b 0d 09 09 | 09 20 20 20 20 69 66 20 |= *s;...|. if |
|00002400| 28 74 6d 70 20 21 3d 20 | 69 73 41 4c 4e 55 4d 28 |(tmp != |isALNUM(|
|00002410| 69 29 29 0d 09 09 09 09 | 20 20 20 20 74 6d 70 20 |i)).....| tmp |
|00002420| 3d 20 21 74 6d 70 3b 0d | 09 09 09 20 20 20 20 65 |= !tmp;.|... e|
|00002430| 6c 73 65 20 69 66 20 28 | 72 65 67 74 72 79 28 70 |lse if (|regtry(p|
|00002440| 72 6f 67 2c 20 73 29 29 | 0d 09 09 09 09 20 20 20 |rog, s))|..... |
|00002450| 20 67 6f 74 6f 20 67 6f | 74 5f 69 74 3b 0d 09 09 | goto go|t_it;...|
|00002460| 09 20 20 20 20 73 2b 2b | 3b 0d 09 09 20 20 20 20 |. s++|;... |
|00002470| 7d 0d 09 09 20 20 20 20 | 69 66 20 28 28 6d 69 6e |}... |if ((min|
|00002480| 6c 65 6e 20 7c 7c 20 21 | 74 6d 70 29 20 26 26 20 |len || !|tmp) && |
|00002490| 72 65 67 74 72 79 28 70 | 72 6f 67 2c 73 29 29 0d |regtry(p|rog,s)).|
|000024a0| 09 09 09 20 20 20 20 67 | 6f 74 6f 20 67 6f 74 5f |... g|oto got_|
|000024b0| 69 74 3b 0d 09 09 20 20 | 20 20 62 72 65 61 6b 3b |it;... | break;|
|000024c0| 0d 09 09 63 61 73 65 20 | 41 4c 4e 55 4d 3a 0d 09 |...case |ALNUM:..|
|000024d0| 09 20 20 20 20 77 68 69 | 6c 65 20 28 73 20 3c 20 |. whi|le (s < |
|000024e0| 73 74 72 65 6e 64 29 20 | 7b 0d 09 09 09 20 20 20 |strend) |{.... |
|000024f0| 20 69 20 3d 20 2a 73 3b | 0d 09 09 09 20 20 20 20 | i = *s;|.... |
|00002500| 69 66 20 28 69 73 41 4c | 4e 55 4d 28 69 29 29 20 |if (isAL|NUM(i)) |
|00002510| 7b 0d 09 09 09 09 20 20 | 20 20 69 66 20 28 74 6d |{..... | if (tm|
|00002520| 70 20 26 26 20 72 65 67 | 74 72 79 28 70 72 6f 67 |p && reg|try(prog|
|00002530| 2c 20 73 29 29 0d 09 09 | 09 09 09 20 20 20 20 67 |, s))...|... g|
|00002540| 6f 74 6f 20 67 6f 74 5f | 69 74 3b 0d 09 09 09 09 |oto got_|it;.....|
|00002550| 20 20 20 20 65 6c 73 65 | 0d 09 09 09 09 09 20 20 | else|...... |
|00002560| 20 20 74 6d 70 20 3d 20 | 64 6f 65 76 65 72 79 3b | tmp = |doevery;|
|00002570| 0d 09 09 09 20 20 20 20 | 7d 0d 09 09 09 20 20 20 |.... |}.... |
|00002580| 20 65 6c 73 65 0d 09 09 | 09 09 20 20 20 20 74 6d | else...|.. tm|
|00002590| 70 20 3d 20 31 3b 0d 09 | 09 09 20 20 20 20 73 2b |p = 1;..|.. s+|
|000025a0| 2b 3b 0d 09 09 20 20 20 | 20 7d 0d 09 09 20 20 20 |+;... | }... |
|000025b0| 20 62 72 65 61 6b 3b 0d | 09 09 63 61 73 65 20 4e | break;.|..case N|
|000025c0| 41 4c 4e 55 4d 3a 0d 09 | 09 20 20 20 20 77 68 69 |ALNUM:..|. whi|
|000025d0| 6c 65 20 28 73 20 3c 20 | 73 74 72 65 6e 64 29 20 |le (s < |strend) |
|000025e0| 7b 0d 09 09 09 20 20 20 | 20 69 20 3d 20 2a 73 3b |{.... | i = *s;|
|000025f0| 0d 09 09 09 20 20 20 20 | 69 66 20 28 21 69 73 41 |.... |if (!isA|
|00002600| 4c 4e 55 4d 28 69 29 29 | 20 7b 0d 09 09 09 09 20 |LNUM(i))| {..... |
|00002610| 20 20 20 69 66 20 28 74 | 6d 70 20 26 26 20 72 65 | if (t|mp && re|
|00002620| 67 74 72 79 28 70 72 6f | 67 2c 20 73 29 29 0d 09 |gtry(pro|g, s))..|
|00002630| 09 09 09 09 20 20 20 20 | 67 6f 74 6f 20 67 6f 74 |.... |goto got|
|00002640| 5f 69 74 3b 0d 09 09 09 | 09 20 20 20 20 65 6c 73 |_it;....|. els|
|00002650| 65 0d 09 09 09 09 09 20 | 20 20 20 74 6d 70 20 3d |e...... | tmp =|
|00002660| 20 64 6f 65 76 65 72 79 | 3b 0d 09 09 09 20 20 20 | doevery|;.... |
|00002670| 20 7d 0d 09 09 09 20 20 | 20 20 65 6c 73 65 0d 09 | }.... | else..|
|00002680| 09 09 09 20 20 20 20 74 | 6d 70 20 3d 20 31 3b 0d |... t|mp = 1;.|
|00002690| 09 09 09 20 20 20 20 73 | 2b 2b 3b 0d 09 09 20 20 |... s|++;... |
|000026a0| 20 20 7d 0d 09 09 20 20 | 20 20 62 72 65 61 6b 3b | }... | break;|
|000026b0| 0d 09 09 63 61 73 65 20 | 53 50 41 43 45 3a 0d 09 |...case |SPACE:..|
|000026c0| 09 20 20 20 20 77 68 69 | 6c 65 20 28 73 20 3c 20 |. whi|le (s < |
|000026d0| 73 74 72 65 6e 64 29 20 | 7b 0d 09 09 09 20 20 20 |strend) |{.... |
|000026e0| 20 69 66 20 28 69 73 53 | 50 41 43 45 28 2a 73 29 | if (isS|PACE(*s)|
|000026f0| 29 20 7b 0d 09 09 09 09 | 20 20 20 20 69 66 20 28 |) {.....| if (|
|00002700| 74 6d 70 20 26 26 20 72 | 65 67 74 72 79 28 70 72 |tmp && r|egtry(pr|
|00002710| 6f 67 2c 20 73 29 29 0d | 09 09 09 09 09 20 20 20 |og, s)).|..... |
|00002720| 20 67 6f 74 6f 20 67 6f | 74 5f 69 74 3b 0d 09 09 | goto go|t_it;...|
|00002730| 09 09 20 20 20 20 65 6c | 73 65 0d 09 09 09 09 09 |.. el|se......|
|00002740| 20 20 20 20 74 6d 70 20 | 3d 20 64 6f 65 76 65 72 | tmp |= doever|
|00002750| 79 3b 0d 09 09 09 20 20 | 20 20 7d 0d 09 09 09 20 |y;.... | }.... |
|00002760| 20 20 20 65 6c 73 65 0d | 09 09 09 09 20 20 20 20 | else.|.... |
|00002770| 74 6d 70 20 3d 20 31 3b | 0d 09 09 09 20 20 20 20 |tmp = 1;|.... |
|00002780| 73 2b 2b 3b 0d 09 09 20 | 20 20 20 7d 0d 09 09 20 |s++;... | }... |
|00002790| 20 20 20 62 72 65 61 6b | 3b 0d 09 09 63 61 73 65 | break|;...case|
|000027a0| 20 4e 53 50 41 43 45 3a | 0d 09 09 20 20 20 20 77 | NSPACE:|... w|
|000027b0| 68 69 6c 65 20 28 73 20 | 3c 20 73 74 72 65 6e 64 |hile (s |< strend|
|000027c0| 29 20 7b 0d 09 09 09 20 | 20 20 20 69 66 20 28 21 |) {.... | if (!|
|000027d0| 69 73 53 50 41 43 45 28 | 2a 73 29 29 20 7b 0d 09 |isSPACE(|*s)) {..|
|000027e0| 09 09 09 20 20 20 20 69 | 66 20 28 74 6d 70 20 26 |... i|f (tmp &|
|000027f0| 26 20 72 65 67 74 72 79 | 28 70 72 6f 67 2c 20 73 |& regtry|(prog, s|
|00002800| 29 29 0d 09 09 09 09 09 | 20 20 20 20 67 6f 74 6f |))......| goto|
|00002810| 20 67 6f 74 5f 69 74 3b | 0d 09 09 09 09 20 20 20 | got_it;|..... |
|00002820| 20 65 6c 73 65 0d 09 09 | 09 09 09 20 20 20 20 74 | else...|... t|
|00002830| 6d 70 20 3d 20 64 6f 65 | 76 65 72 79 3b 0d 09 09 |mp = doe|very;...|
|00002840| 09 20 20 20 20 7d 0d 09 | 09 09 20 20 20 20 65 6c |. }..|.. el|
|00002850| 73 65 0d 09 09 09 09 20 | 20 20 20 74 6d 70 20 3d |se..... | tmp =|
|00002860| 20 31 3b 0d 09 09 09 20 | 20 20 20 73 2b 2b 3b 0d | 1;.... | s++;.|
|00002870| 09 09 20 20 20 20 7d 0d | 09 09 20 20 20 20 62 72 |.. }.|.. br|
|00002880| 65 61 6b 3b 0d 09 09 63 | 61 73 65 20 44 49 47 49 |eak;...c|ase DIGI|
|00002890| 54 3a 0d 09 09 20 20 20 | 20 77 68 69 6c 65 20 28 |T:... | while (|
|000028a0| 73 20 3c 20 73 74 72 65 | 6e 64 29 20 7b 0d 09 09 |s < stre|nd) {...|
|000028b0| 09 20 20 20 20 69 66 20 | 28 69 73 44 49 47 49 54 |. if |(isDIGIT|
|000028c0| 28 2a 73 29 29 20 7b 0d | 09 09 09 09 20 20 20 20 |(*s)) {.|.... |
|000028d0| 69 66 20 28 74 6d 70 20 | 26 26 20 72 65 67 74 72 |if (tmp |&& regtr|
|000028e0| 79 28 70 72 6f 67 2c 20 | 73 29 29 0d 09 09 09 09 |y(prog, |s)).....|
|000028f0| 09 20 20 20 20 67 6f 74 | 6f 20 67 6f 74 5f 69 74 |. got|o got_it|
|00002900| 3b 0d 09 09 09 09 20 20 | 20 20 65 6c 73 65 0d 09 |;..... | else..|
|00002910| 09 09 09 09 20 20 20 20 | 74 6d 70 20 3d 20 64 6f |.... |tmp = do|
|00002920| 65 76 65 72 79 3b 0d 09 | 09 09 20 20 20 20 7d 0d |every;..|.. }.|
|00002930| 09 09 09 20 20 20 20 65 | 6c 73 65 0d 09 09 09 09 |... e|lse.....|
|00002940| 20 20 20 20 74 6d 70 20 | 3d 20 31 3b 0d 09 09 09 | tmp |= 1;....|
|00002950| 20 20 20 20 73 2b 2b 3b | 0d 09 09 20 20 20 20 7d | s++;|... }|
|00002960| 0d 09 09 20 20 20 20 62 | 72 65 61 6b 3b 0d 09 09 |... b|reak;...|
|00002970| 63 61 73 65 20 4e 44 49 | 47 49 54 3a 0d 09 09 20 |case NDI|GIT:... |
|00002980| 20 20 20 77 68 69 6c 65 | 20 28 73 20 3c 20 73 74 | while| (s < st|
|00002990| 72 65 6e 64 29 20 7b 0d | 09 09 09 20 20 20 20 69 |rend) {.|... i|
|000029a0| 66 20 28 21 69 73 44 49 | 47 49 54 28 2a 73 29 29 |f (!isDI|GIT(*s))|
|000029b0| 20 7b 0d 09 09 09 09 20 | 20 20 20 69 66 20 28 74 | {..... | if (t|
|000029c0| 6d 70 20 26 26 20 72 65 | 67 74 72 79 28 70 72 6f |mp && re|gtry(pro|
|000029d0| 67 2c 20 73 29 29 0d 09 | 09 09 09 09 20 20 20 20 |g, s))..|.... |
|000029e0| 67 6f 74 6f 20 67 6f 74 | 5f 69 74 3b 0d 09 09 09 |goto got|_it;....|
|000029f0| 09 20 20 20 20 65 6c 73 | 65 0d 09 09 09 09 09 20 |. els|e...... |
|00002a00| 20 20 20 74 6d 70 20 3d | 20 64 6f 65 76 65 72 79 | tmp =| doevery|
|00002a10| 3b 0d 09 09 09 20 20 20 | 20 7d 0d 09 09 09 20 20 |;.... | }.... |
|00002a20| 20 20 65 6c 73 65 0d 09 | 09 09 09 20 20 20 20 74 | else..|... t|
|00002a30| 6d 70 20 3d 20 31 3b 0d | 09 09 09 20 20 20 20 73 |mp = 1;.|... s|
|00002a40| 2b 2b 3b 0d 09 09 20 20 | 20 20 7d 0d 09 09 20 20 |++;... | }... |
|00002a50| 20 20 62 72 65 61 6b 3b | 0d 09 09 7d 0d 09 7d 0d | break;|...}..}.|
|00002a60| 09 65 6c 73 65 20 7b 0d | 09 09 69 66 20 28 6d 69 |.else {.|..if (mi|
|00002a70| 6e 6c 65 6e 29 0d 09 09 | 20 20 20 20 64 6f 6e 74 |nlen)...| dont|
|00002a80| 62 6f 74 68 65 72 20 3d | 20 6d 69 6e 6c 65 6e 20 |bother =| minlen |
|00002a90| 2d 20 31 3b 0d 09 09 73 | 74 72 65 6e 64 20 2d 3d |- 1;...s|trend -=|
|00002aa0| 20 64 6f 6e 74 62 6f 74 | 68 65 72 3b 0d 09 09 2f | dontbot|her;.../|
|00002ab0| 2a 20 57 65 20 64 6f 6e | 27 74 20 6b 6e 6f 77 20 |* We don|'t know |
|00002ac0| 6d 75 63 68 20 2d 2d 20 | 67 65 6e 65 72 61 6c 20 |much -- |general |
|00002ad0| 63 61 73 65 2e 20 2a 2f | 0d 09 09 64 6f 20 7b 0d |case. */|...do {.|
|00002ae0| 09 09 09 69 66 20 28 72 | 65 67 74 72 79 28 70 72 |...if (r|egtry(pr|
|00002af0| 6f 67 2c 20 73 29 29 0d | 09 09 09 09 67 6f 74 6f |og, s)).|....goto|
|00002b00| 20 67 6f 74 5f 69 74 3b | 0d 09 09 7d 20 77 68 69 | got_it;|...} whi|
|00002b10| 6c 65 20 28 73 2b 2b 20 | 3c 20 73 74 72 65 6e 64 |le (s++ |< strend|
|00002b20| 29 3b 0d 09 7d 0d 0d 09 | 2f 2a 20 46 61 69 6c 75 |);..}...|/* Failu|
|00002b30| 72 65 2e 20 2a 2f 0d 09 | 67 6f 74 6f 20 70 68 6f |re. */..|goto pho|
|00002b40| 6f 65 79 3b 0d 0d 20 20 | 20 20 67 6f 74 5f 69 74 |oey;.. | got_it|
|00002b50| 3a 0d 09 70 72 6f 67 2d | 3e 73 75 62 62 65 67 20 |:..prog-|>subbeg |
|00002b60| 3d 20 73 74 72 62 65 67 | 3b 0d 09 70 72 6f 67 2d |= strbeg|;..prog-|
|00002b70| 3e 73 75 62 65 6e 64 20 | 3d 20 73 74 72 65 6e 64 |>subend |= strend|
|00002b80| 3b 0d 09 69 66 20 28 28 | 21 73 61 66 65 62 61 73 |;..if ((|!safebas|
|00002b90| 65 20 26 26 20 28 70 72 | 6f 67 2d 3e 6e 70 61 72 |e && (pr|og->npar|
|00002ba0| 65 6e 73 20 7c 7c 20 73 | 61 77 61 6d 70 65 72 73 |ens || s|awampers|
|00002bb0| 61 6e 64 29 29 20 7c 7c | 20 70 72 6f 67 2d 3e 64 |and)) ||| prog->d|
|00002bc0| 6f 5f 66 6f 6c 64 69 6e | 67 29 7b 0d 09 09 73 74 |o_foldin|g){...st|
|00002bd0| 72 65 6e 64 20 2b 3d 20 | 64 6f 6e 74 62 6f 74 68 |rend += |dontboth|
|00002be0| 65 72 3b 09 2f 2a 20 75 | 6e 63 68 65 61 74 20 2a |er;./* u|ncheat *|
|00002bf0| 2f 0d 09 09 69 66 20 28 | 73 61 66 65 62 61 73 65 |/...if (|safebase|
|00002c00| 29 09 09 09 2f 2a 20 6e | 6f 20 6e 65 65 64 20 66 |).../* n|o need f|
|00002c10| 6f 72 20 24 64 69 67 69 | 74 20 6c 61 74 65 72 20 |or $digi|t later |
|00002c20| 2a 2f 0d 09 09 20 20 20 | 20 73 20 3d 20 73 74 72 |*/... | s = str|
|00002c30| 62 65 67 3b 0d 09 09 65 | 6c 73 65 20 69 66 20 28 |beg;...e|lse if (|
|00002c40| 73 74 72 62 65 67 20 21 | 3d 20 70 72 6f 67 2d 3e |strbeg !|= prog->|
|00002c50| 73 75 62 62 61 73 65 29 | 20 7b 0d 09 09 20 20 20 |subbase)| {... |
|00002c60| 20 69 20 3d 20 73 74 72 | 65 6e 64 20 2d 20 73 74 | i = str|end - st|
|00002c70| 72 69 6e 67 20 2b 20 28 | 73 74 72 69 6e 67 61 72 |ring + (|stringar|
|00002c80| 67 20 2d 20 73 74 72 62 | 65 67 29 3b 0d 09 09 20 |g - strb|eg);... |
|00002c90| 20 20 20 73 20 3d 20 6e | 73 61 76 65 73 74 72 28 | s = n|savestr(|
|00002ca0| 73 74 72 62 65 67 2c 69 | 29 3b 09 2f 2a 20 73 6f |strbeg,i|);./* so|
|00002cb0| 20 24 64 69 67 69 74 20 | 77 69 6c 6c 20 77 6f 72 | $digit |will wor|
|00002cc0| 6b 20 6c 61 74 65 72 20 | 2a 2f 0d 09 09 20 20 20 |k later |*/... |
|00002cd0| 20 69 66 20 28 70 72 6f | 67 2d 3e 73 75 62 62 61 | if (pro|g->subba|
|00002ce0| 73 65 29 0d 09 09 09 20 | 20 20 20 53 61 66 65 66 |se).... | Safef|
|00002cf0| 72 65 65 28 70 72 6f 67 | 2d 3e 73 75 62 62 61 73 |ree(prog|->subbas|
|00002d00| 65 29 3b 0d 09 09 20 20 | 20 20 70 72 6f 67 2d 3e |e);... | prog->|
|00002d10| 73 75 62 62 65 67 20 3d | 20 70 72 6f 67 2d 3e 73 |subbeg =| prog->s|
|00002d20| 75 62 62 61 73 65 20 3d | 20 73 3b 0d 09 09 20 20 |ubbase =| s;... |
|00002d30| 20 20 70 72 6f 67 2d 3e | 73 75 62 65 6e 64 20 3d | prog->|subend =|
|00002d40| 20 73 2b 69 3b 0d 09 09 | 7d 0d 09 09 65 6c 73 65 | s+i;...|}...else|
|00002d50| 20 7b 0d 09 09 20 20 20 | 20 69 20 3d 20 73 74 72 | {... | i = str|
|00002d60| 65 6e 64 20 2d 20 73 74 | 72 69 6e 67 20 2b 20 28 |end - st|ring + (|
|00002d70| 73 74 72 69 6e 67 61 72 | 67 20 2d 20 73 74 72 62 |stringar|g - strb|
|00002d80| 65 67 29 3b 0d 09 09 20 | 20 20 20 70 72 6f 67 2d |eg);... | prog-|
|00002d90| 3e 73 75 62 62 65 67 20 | 3d 20 73 20 3d 20 70 72 |>subbeg |= s = pr|
|00002da0| 6f 67 2d 3e 73 75 62 62 | 61 73 65 3b 0d 09 09 20 |og->subb|ase;... |
|00002db0| 20 20 20 70 72 6f 67 2d | 3e 73 75 62 65 6e 64 20 | prog-|>subend |
|00002dc0| 3d 20 73 2b 69 3b 0d 09 | 09 7d 0d 09 09 73 20 2b |= s+i;..|.}...s +|
|00002dd0| 3d 20 28 73 74 72 69 6e | 67 61 72 67 20 2d 20 73 |= (strin|garg - s|
|00002de0| 74 72 62 65 67 29 3b 0d | 09 09 66 6f 72 20 28 69 |trbeg);.|..for (i|
|00002df0| 20 3d 20 30 3b 20 69 20 | 3c 3d 20 70 72 6f 67 2d | = 0; i |<= prog-|
|00002e00| 3e 6e 70 61 72 65 6e 73 | 3b 20 69 2b 2b 29 20 7b |>nparens|; i++) {|
|00002e10| 0d 09 09 09 69 66 20 28 | 70 72 6f 67 2d 3e 65 6e |....if (|prog->en|
|00002e20| 64 70 5b 69 5d 29 20 7b | 0d 09 09 09 20 20 20 20 |dp[i]) {|.... |
|00002e30| 70 72 6f 67 2d 3e 73 74 | 61 72 74 70 5b 69 5d 20 |prog->st|artp[i] |
|00002e40| 3d 20 73 20 2b 20 28 70 | 72 6f 67 2d 3e 73 74 61 |= s + (p|rog->sta|
|00002e50| 72 74 70 5b 69 5d 20 2d | 20 73 74 72 69 6e 67 29 |rtp[i] -| string)|
|00002e60| 3b 0d 09 09 09 20 20 20 | 20 70 72 6f 67 2d 3e 65 |;.... | prog->e|
|00002e70| 6e 64 70 5b 69 5d 20 3d | 20 73 20 2b 20 28 70 72 |ndp[i] =| s + (pr|
|00002e80| 6f 67 2d 3e 65 6e 64 70 | 5b 69 5d 20 2d 20 73 74 |og->endp|[i] - st|
|00002e90| 72 69 6e 67 29 3b 0d 09 | 09 09 7d 0d 09 09 7d 0d |ring);..|..}...}.|
|00002ea0| 09 09 69 66 20 28 70 72 | 6f 67 2d 3e 64 6f 5f 66 |..if (pr|og->do_f|
|00002eb0| 6f 6c 64 69 6e 67 29 0d | 09 09 09 53 61 66 65 66 |olding).|...Safef|
|00002ec0| 72 65 65 28 73 74 72 69 | 6e 67 29 3b 0d 09 7d 0d |ree(stri|ng);..}.|
|00002ed0| 09 72 65 74 75 72 6e 28 | 31 29 3b 0d 0d 20 20 20 |.return(|1);.. |
|00002ee0| 20 70 68 6f 6f 65 79 3a | 0d 09 69 66 20 28 70 72 | phooey:|..if (pr|
|00002ef0| 6f 67 2d 3e 64 6f 5f 66 | 6f 6c 64 69 6e 67 29 0d |og->do_f|olding).|
|00002f00| 09 09 53 61 66 65 66 72 | 65 65 28 73 74 72 69 6e |..Safefr|ee(strin|
|00002f10| 67 29 3b 0d 09 72 65 74 | 75 72 6e 28 30 29 3b 0d |g);..ret|urn(0);.|
|00002f20| 7d 0d 0d 2f 2a 0d 20 2d | 20 72 65 67 74 72 79 20 |}../*. -| regtry |
|00002f30| 2d 20 74 72 79 20 6d 61 | 74 63 68 20 61 74 20 73 |- try ma|tch at s|
|00002f40| 70 65 63 69 66 69 63 20 | 70 6f 69 6e 74 0d 20 2a |pecific |point. *|
|00002f50| 2f 0d 73 74 61 74 69 63 | 20 69 6e 74 09 09 09 2f |/.static| int.../|
|00002f60| 2a 20 30 20 66 61 69 6c | 75 72 65 2c 20 31 20 73 |* 0 fail|ure, 1 s|
|00002f70| 75 63 63 65 73 73 20 2a | 2f 0d 72 65 67 74 72 79 |uccess *|/.regtry|
|00002f80| 28 70 72 6f 67 2c 20 73 | 74 72 69 6e 67 29 0d 72 |(prog, s|tring).r|
|00002f90| 65 67 65 78 70 20 2a 70 | 72 6f 67 3b 0d 63 68 61 |egexp *p|rog;.cha|
|00002fa0| 72 20 2a 73 74 72 69 6e | 67 3b 0d 7b 0d 09 72 65 |r *strin|g;.{..re|
|00002fb0| 67 69 73 74 65 72 20 69 | 6e 74 20 69 3b 0d 09 72 |gister i|nt i;..r|
|00002fc0| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 2a 2a 73 |egister |char **s|
|00002fd0| 70 3b 0d 09 72 65 67 69 | 73 74 65 72 20 63 68 61 |p;..regi|ster cha|
|00002fe0| 72 20 2a 2a 65 70 3b 0d | 0d 09 72 65 67 69 6e 70 |r **ep;.|..reginp|
|00002ff0| 75 74 20 3d 20 73 74 72 | 69 6e 67 3b 0d 09 72 65 |ut = str|ing;..re|
|00003000| 67 73 74 61 72 74 70 20 | 3d 20 70 72 6f 67 2d 3e |gstartp |= prog->|
|00003010| 73 74 61 72 74 70 3b 0d | 09 72 65 67 65 6e 64 70 |startp;.|.regendp|
|00003020| 20 3d 20 70 72 6f 67 2d | 3e 65 6e 64 70 3b 0d 09 | = prog-|>endp;..|
|00003030| 72 65 67 6c 61 73 74 70 | 61 72 65 6e 20 3d 20 26 |reglastp|aren = &|
|00003040| 70 72 6f 67 2d 3e 6c 61 | 73 74 70 61 72 65 6e 3b |prog->la|stparen;|
|00003050| 0d 09 70 72 6f 67 2d 3e | 6c 61 73 74 70 61 72 65 |..prog->|lastpare|
|00003060| 6e 20 3d 20 30 3b 0d 0d | 09 73 70 20 3d 20 70 72 |n = 0;..|.sp = pr|
|00003070| 6f 67 2d 3e 73 74 61 72 | 74 70 3b 0d 09 65 70 20 |og->star|tp;..ep |
|00003080| 3d 20 70 72 6f 67 2d 3e | 65 6e 64 70 3b 0d 09 69 |= prog->|endp;..i|
|00003090| 66 20 28 70 72 6f 67 2d | 3e 6e 70 61 72 65 6e 73 |f (prog-|>nparens|
|000030a0| 29 20 7b 0d 09 09 66 6f | 72 20 28 69 20 3d 20 70 |) {...fo|r (i = p|
|000030b0| 72 6f 67 2d 3e 6e 70 61 | 72 65 6e 73 3b 20 69 20 |rog->npa|rens; i |
|000030c0| 3e 3d 20 30 3b 20 69 2d | 2d 29 20 7b 0d 09 09 09 |>= 0; i-|-) {....|
|000030d0| 2a 73 70 2b 2b 20 3d 20 | 4e 55 4c 4c 3b 0d 09 09 |*sp++ = |NULL;...|
|000030e0| 09 2a 65 70 2b 2b 20 3d | 20 4e 55 4c 4c 3b 0d 09 |.*ep++ =| NULL;..|
|000030f0| 09 7d 0d 09 7d 0d 09 69 | 66 20 28 72 65 67 6d 61 |.}..}..i|f (regma|
|00003100| 74 63 68 28 70 72 6f 67 | 2d 3e 70 72 6f 67 72 61 |tch(prog|->progra|
|00003110| 6d 20 2b 20 31 29 20 26 | 26 20 72 65 67 69 6e 70 |m + 1) &|& reginp|
|00003120| 75 74 20 3e 3d 20 72 65 | 67 74 69 6c 6c 29 20 7b |ut >= re|gtill) {|
|00003130| 0d 09 09 70 72 6f 67 2d | 3e 73 74 61 72 74 70 5b |...prog-|>startp[|
|00003140| 30 5d 20 3d 20 73 74 72 | 69 6e 67 3b 0d 09 09 70 |0] = str|ing;...p|
|00003150| 72 6f 67 2d 3e 65 6e 64 | 70 5b 30 5d 20 3d 20 72 |rog->end|p[0] = r|
|00003160| 65 67 69 6e 70 75 74 3b | 0d 09 09 72 65 74 75 72 |eginput;|...retur|
|00003170| 6e 28 31 29 3b 0d 09 7d | 20 65 6c 73 65 0d 09 09 |n(1);..}| else...|
|00003180| 72 65 74 75 72 6e 28 30 | 29 3b 0d 7d 0d 0d 2f 2a |return(0|);.}../*|
|00003190| 0d 20 2d 20 72 65 67 6d | 61 74 63 68 20 2d 20 6d |. - regm|atch - m|
|000031a0| 61 69 6e 20 6d 61 74 63 | 68 69 6e 67 20 72 6f 75 |ain matc|hing rou|
|000031b0| 74 69 6e 65 0d 20 2a 0d | 20 2a 20 43 6f 6e 63 65 |tine. *.| * Conce|
|000031c0| 70 74 75 61 6c 6c 79 20 | 74 68 65 20 73 74 72 61 |ptually |the stra|
|000031d0| 74 65 67 79 20 69 73 20 | 73 69 6d 70 6c 65 3a 20 |tegy is |simple: |
|000031e0| 20 63 68 65 63 6b 20 74 | 6f 20 73 65 65 20 77 68 | check t|o see wh|
|000031f0| 65 74 68 65 72 20 74 68 | 65 20 63 75 72 72 65 6e |ether th|e curren|
|00003200| 74 0d 20 2a 20 6e 6f 64 | 65 20 6d 61 74 63 68 65 |t. * nod|e matche|
|00003210| 73 2c 20 63 61 6c 6c 20 | 73 65 6c 66 20 72 65 63 |s, call |self rec|
|00003220| 75 72 73 69 76 65 6c 79 | 20 74 6f 20 73 65 65 20 |ursively| to see |
|00003230| 77 68 65 74 68 65 72 20 | 74 68 65 20 72 65 73 74 |whether |the rest|
|00003240| 20 6d 61 74 63 68 65 73 | 2c 0d 20 2a 20 61 6e 64 | matches|,. * and|
|00003250| 20 74 68 65 6e 20 61 63 | 74 20 61 63 63 6f 72 64 | then ac|t accord|
|00003260| 69 6e 67 6c 79 2e 20 20 | 49 6e 20 70 72 61 63 74 |ingly. |In pract|
|00003270| 69 63 65 20 77 65 20 6d | 61 6b 65 20 73 6f 6d 65 |ice we m|ake some|
|00003280| 20 65 66 66 6f 72 74 20 | 74 6f 20 61 76 6f 69 64 | effort |to avoid|
|00003290| 0d 20 2a 20 72 65 63 75 | 72 73 69 6f 6e 2c 20 69 |. * recu|rsion, i|
|000032a0| 6e 20 70 61 72 74 69 63 | 75 6c 61 72 20 62 79 20 |n partic|ular by |
|000032b0| 67 6f 69 6e 67 20 74 68 | 72 6f 75 67 68 20 22 6f |going th|rough "o|
|000032c0| 72 64 69 6e 61 72 79 22 | 20 6e 6f 64 65 73 20 28 |rdinary"| nodes (|
|000032d0| 74 68 61 74 20 64 6f 6e | 27 74 0d 20 2a 20 6e 65 |that don|'t. * ne|
|000032e0| 65 64 20 74 6f 20 6b 6e | 6f 77 20 77 68 65 74 68 |ed to kn|ow wheth|
|000032f0| 65 72 20 74 68 65 20 72 | 65 73 74 20 6f 66 20 74 |er the r|est of t|
|00003300| 68 65 20 6d 61 74 63 68 | 20 66 61 69 6c 65 64 29 |he match| failed)|
|00003310| 20 62 79 20 61 20 6c 6f | 6f 70 20 69 6e 73 74 65 | by a lo|op inste|
|00003320| 61 64 20 6f 66 0d 20 2a | 20 62 79 20 72 65 63 75 |ad of. *| by recu|
|00003330| 72 73 69 6f 6e 2e 0d 20 | 2a 2f 0d 2f 2a 20 5b 6c |rsion.. |*/./* [l|
|00003340| 77 61 6c 6c 5d 20 49 27 | 76 65 20 68 6f 69 73 74 |wall] I'|ve hoist|
|00003350| 65 64 20 74 68 65 20 72 | 65 67 69 73 74 65 72 20 |ed the r|egister |
|00003360| 64 65 63 6c 61 72 61 74 | 69 6f 6e 73 20 74 6f 20 |declarat|ions to |
|00003370| 74 68 65 20 6f 75 74 65 | 72 20 62 6c 6f 63 6b 20 |the oute|r block |
|00003380| 69 6e 20 6f 72 64 65 72 | 20 74 6f 0d 20 2a 20 6d |in order| to. * m|
|00003390| 61 79 62 65 20 73 61 76 | 65 20 61 20 6c 69 74 74 |aybe sav|e a litt|
|000033a0| 6c 65 20 62 69 74 20 6f | 66 20 70 75 73 68 69 6e |le bit o|f pushin|
|000033b0| 67 20 61 6e 64 20 70 6f | 70 70 69 6e 67 20 6f 6e |g and po|pping on|
|000033c0| 20 74 68 65 20 73 74 61 | 63 6b 2e 20 20 49 74 20 | the sta|ck. It |
|000033d0| 61 6c 73 6f 20 74 61 6b | 65 73 0d 20 2a 20 61 64 |also tak|es. * ad|
|000033e0| 76 61 6e 74 61 67 65 20 | 6f 66 20 6d 61 63 68 69 |vantage |of machi|
|000033f0| 6e 65 73 20 74 68 61 74 | 20 75 73 65 20 61 20 72 |nes that| use a r|
|00003400| 65 67 69 73 74 65 72 20 | 73 61 76 65 20 6d 61 73 |egister |save mas|
|00003410| 6b 20 6f 6e 20 73 75 62 | 72 6f 75 74 69 6e 65 20 |k on sub|routine |
|00003420| 65 6e 74 72 79 2e 0d 20 | 2a 2f 0d 73 74 61 74 69 |entry.. |*/.stati|
|00003430| 63 20 69 6e 74 09 09 09 | 2f 2a 20 30 20 66 61 69 |c int...|/* 0 fai|
|00003440| 6c 75 72 65 2c 20 31 20 | 73 75 63 63 65 73 73 20 |lure, 1 |success |
|00003450| 2a 2f 0d 72 65 67 6d 61 | 74 63 68 28 70 72 6f 67 |*/.regma|tch(prog|
|00003460| 29 0d 63 68 61 72 20 2a | 70 72 6f 67 3b 0d 7b 0d |).char *|prog;.{.|
|00003470| 09 72 65 67 69 73 74 65 | 72 20 63 68 61 72 20 2a |.registe|r char *|
|00003480| 73 63 61 6e 3b 09 2f 2a | 20 43 75 72 72 65 6e 74 |scan;./*| Current|
|00003490| 20 6e 6f 64 65 2e 20 2a | 2f 0d 09 63 68 61 72 20 | node. *|/..char |
|000034a0| 2a 6e 65 78 74 3b 09 09 | 2f 2a 20 4e 65 78 74 20 |*next;..|/* Next |
|000034b0| 6e 6f 64 65 2e 20 2a 2f | 0d 09 72 65 67 69 73 74 |node. */|..regist|
|000034c0| 65 72 20 69 6e 74 20 6e | 65 78 74 63 68 61 72 3b |er int n|extchar;|
|000034d0| 0d 09 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 6e |..regist|er int n|
|000034e0| 3b 09 09 2f 2a 20 6e 6f | 20 6f 72 20 6e 65 78 74 |;../* no| or next|
|000034f0| 20 2a 2f 0d 09 72 65 67 | 69 73 74 65 72 20 69 6e | */..reg|ister in|
|00003500| 74 20 6c 6e 3b 20 20 20 | 20 20 20 20 20 2f 2a 20 |t ln; | /* |
|00003510| 6c 65 6e 20 6f 72 20 6c | 61 73 74 20 2a 2f 0d 09 |len or l|ast */..|
|00003520| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 20 2a 73 |register| char *s|
|00003530| 3b 09 2f 2a 20 6f 70 65 | 72 61 6e 64 20 6f 72 20 |;./* ope|rand or |
|00003540| 73 61 76 65 20 2a 2f 0d | 09 72 65 67 69 73 74 65 |save */.|.registe|
|00003550| 72 20 63 68 61 72 20 2a | 6c 6f 63 69 6e 70 75 74 |r char *|locinput|
|00003560| 20 3d 20 72 65 67 69 6e | 70 75 74 3b 0d 0d 09 6e | = regin|put;...n|
|00003570| 65 78 74 63 68 61 72 20 | 3d 20 2a 6c 6f 63 69 6e |extchar |= *locin|
|00003580| 70 75 74 3b 0d 09 73 63 | 61 6e 20 3d 20 70 72 6f |put;..sc|an = pro|
|00003590| 67 3b 0d 23 69 66 64 65 | 66 20 44 45 42 55 47 47 |g;.#ifde|f DEBUGG|
|000035a0| 49 4e 47 0d 09 69 66 20 | 28 73 63 61 6e 20 21 3d |ING..if |(scan !=|
|000035b0| 20 4e 55 4c 4c 20 26 26 | 20 72 65 67 6e 61 72 72 | NULL &&| regnarr|
|000035c0| 61 74 65 29 0d 09 09 66 | 70 72 69 6e 74 66 28 73 |ate)...f|printf(s|
|000035d0| 74 64 65 72 72 2c 20 22 | 25 73 28 5c 6e 22 2c 20 |tderr, "|%s(\n", |
|000035e0| 72 65 67 70 72 6f 70 28 | 73 63 61 6e 29 29 3b 0d |regprop(|scan));.|
|000035f0| 23 65 6e 64 69 66 0d 09 | 77 68 69 6c 65 20 28 73 |#endif..|while (s|
|00003600| 63 61 6e 20 21 3d 20 4e | 55 4c 4c 29 20 7b 0d 23 |can != N|ULL) {.#|
|00003610| 69 66 64 65 66 20 44 45 | 42 55 47 47 49 4e 47 0d |ifdef DE|BUGGING.|
|00003620| 09 09 69 66 20 28 72 65 | 67 6e 61 72 72 61 74 65 |..if (re|gnarrate|
|00003630| 29 0d 09 09 09 66 70 72 | 69 6e 74 66 28 73 74 64 |)....fpr|intf(std|
|00003640| 65 72 72 2c 20 22 25 73 | 2e 2e 2e 5c 6e 22 2c 20 |err, "%s|...\n", |
|00003650| 72 65 67 70 72 6f 70 28 | 73 63 61 6e 29 29 3b 0d |regprop(|scan));.|
|00003660| 23 65 6e 64 69 66 0d 0d | 23 69 66 64 65 66 20 52 |#endif..|#ifdef R|
|00003670| 45 47 41 4c 49 47 4e 0d | 09 09 6e 65 78 74 20 3d |EGALIGN.|..next =|
|00003680| 20 73 63 61 6e 20 2b 20 | 4e 45 58 54 28 73 63 61 | scan + |NEXT(sca|
|00003690| 6e 29 3b 0d 09 09 69 66 | 20 28 6e 65 78 74 20 3d |n);...if| (next =|
|000036a0| 3d 20 73 63 61 6e 29 0d | 09 09 20 20 20 20 6e 65 |= scan).|.. ne|
|000036b0| 78 74 20 3d 20 4e 55 4c | 4c 3b 0d 23 65 6c 73 65 |xt = NUL|L;.#else|
|000036c0| 0d 09 09 6e 65 78 74 20 | 3d 20 72 65 67 6e 65 78 |...next |= regnex|
|000036d0| 74 28 73 63 61 6e 29 3b | 0d 23 65 6e 64 69 66 0d |t(scan);|.#endif.|
|000036e0| 0d 09 09 73 77 69 74 63 | 68 20 28 4f 50 28 73 63 |...switc|h (OP(sc|
|000036f0| 61 6e 29 29 20 7b 0d 09 | 09 63 61 73 65 20 42 4f |an)) {..|.case BO|
|00003700| 4c 3a 0d 09 09 09 69 66 | 20 28 6c 6f 63 69 6e 70 |L:....if| (locinp|
|00003710| 75 74 20 3d 3d 20 72 65 | 67 62 6f 6c 20 3f 20 72 |ut == re|gbol ? r|
|00003720| 65 67 70 72 65 76 20 3d | 3d 20 27 5c 6e 27 20 3a |egprev =|= '\n' :|
|00003730| 0d 09 09 09 20 20 20 20 | 28 28 6e 65 78 74 63 68 |.... |((nextch|
|00003740| 61 72 20 7c 7c 20 6c 6f | 63 69 6e 70 75 74 20 3c |ar || lo|cinput <|
|00003750| 20 72 65 67 65 6f 6c 29 | 20 26 26 0d 09 09 09 20 | regeol)| &&.... |
|00003760| 20 20 20 20 20 6c 6f 63 | 69 6e 70 75 74 5b 2d 31 | loc|input[-1|
|00003770| 5d 20 3d 3d 20 27 5c 6e | 27 29 20 29 0d 09 09 09 |] == '\n|') )....|
|00003780| 7b 0d 09 09 09 09 2f 2a | 20 72 65 67 74 69 6c 6c |{...../*| regtill|
|00003790| 20 3d 20 72 65 67 62 6f | 6c 3b 20 2a 2f 0d 09 09 | = regbo|l; */...|
|000037a0| 09 09 62 72 65 61 6b 3b | 0d 09 09 09 7d 0d 09 09 |..break;|....}...|
|000037b0| 09 72 65 74 75 72 6e 28 | 30 29 3b 0d 09 09 63 61 |.return(|0);...ca|
|000037c0| 73 65 20 45 4f 4c 3a 0d | 09 09 09 69 66 20 28 28 |se EOL:.|...if ((|
|000037d0| 6e 65 78 74 63 68 61 72 | 20 7c 7c 20 6c 6f 63 69 |nextchar| || loci|
|000037e0| 6e 70 75 74 20 3c 20 72 | 65 67 65 6f 6c 29 20 26 |nput < r|egeol) &|
|000037f0| 26 20 6e 65 78 74 63 68 | 61 72 20 21 3d 20 27 5c |& nextch|ar != '\|
|00003800| 6e 27 29 0d 09 09 09 09 | 72 65 74 75 72 6e 28 30 |n').....|return(0|
|00003810| 29 3b 0d 09 09 09 69 66 | 20 28 21 6d 75 6c 74 69 |);....if| (!multi|
|00003820| 6c 69 6e 65 20 26 26 20 | 72 65 67 65 6f 6c 20 2d |line && |regeol -|
|00003830| 20 6c 6f 63 69 6e 70 75 | 74 20 3e 20 31 29 0d 09 | locinpu|t > 1)..|
|00003840| 09 09 09 72 65 74 75 72 | 6e 20 30 3b 0d 09 09 09 |...retur|n 0;....|
|00003850| 2f 2a 20 72 65 67 74 69 | 6c 6c 20 3d 20 72 65 67 |/* regti|ll = reg|
|00003860| 62 6f 6c 3b 20 2a 2f 0d | 09 09 09 62 72 65 61 6b |bol; */.|...break|
|00003870| 3b 0d 09 09 63 61 73 65 | 20 41 4e 59 3a 0d 09 09 |;...case| ANY:...|
|00003880| 09 69 66 20 28 28 6e 65 | 78 74 63 68 61 72 20 3d |.if ((ne|xtchar =|
|00003890| 3d 20 27 5c 30 27 20 26 | 26 20 6c 6f 63 69 6e 70 |= '\0' &|& locinp|
|000038a0| 75 74 20 3e 3d 20 72 65 | 67 65 6f 6c 29 20 7c 7c |ut >= re|geol) |||
|000038b0| 0d 09 09 09 20 20 6e 65 | 78 74 63 68 61 72 20 3d |.... ne|xtchar =|
|000038c0| 3d 20 27 5c 6e 27 29 0d | 09 09 09 09 72 65 74 75 |= '\n').|....retu|
|000038d0| 72 6e 28 30 29 3b 0d 09 | 09 09 6e 65 78 74 63 68 |rn(0);..|..nextch|
|000038e0| 61 72 20 3d 20 2a 2b 2b | 6c 6f 63 69 6e 70 75 74 |ar = *++|locinput|
|000038f0| 3b 0d 09 09 09 62 72 65 | 61 6b 3b 0d 09 09 63 61 |;....bre|ak;...ca|
|00003900| 73 65 20 45 58 41 43 54 | 4c 59 3a 0d 09 09 09 73 |se EXACT|LY:....s|
|00003910| 20 3d 20 4f 50 45 52 41 | 4e 44 28 73 63 61 6e 29 | = OPERA|ND(scan)|
|00003920| 3b 0d 09 09 09 6c 6e 20 | 3d 20 2a 73 2b 2b 3b 0d |;....ln |= *s++;.|
|00003930| 09 09 09 2f 2a 20 49 6e | 6c 69 6e 65 20 74 68 65 |.../* In|line the|
|00003940| 20 66 69 72 73 74 20 63 | 68 61 72 61 63 74 65 72 | first c|haracter|
|00003950| 2c 20 66 6f 72 20 73 70 | 65 65 64 2e 20 2a 2f 0d |, for sp|eed. */.|
|00003960| 09 09 09 69 66 20 28 2a | 73 20 21 3d 20 6e 65 78 |...if (*|s != nex|
|00003970| 74 63 68 61 72 29 0d 09 | 09 09 09 72 65 74 75 72 |tchar)..|...retur|
|00003980| 6e 28 30 29 3b 0d 09 09 | 09 69 66 20 28 72 65 67 |n(0);...|.if (reg|
|00003990| 65 6f 6c 20 2d 20 6c 6f | 63 69 6e 70 75 74 20 3c |eol - lo|cinput <|
|000039a0| 20 6c 6e 29 0d 09 09 09 | 09 72 65 74 75 72 6e 20 | ln)....|.return |
|000039b0| 30 3b 0d 09 09 09 69 66 | 20 28 6c 6e 20 3e 20 31 |0;....if| (ln > 1|
|000039c0| 20 26 26 20 62 63 6d 70 | 28 73 2c 20 6c 6f 63 69 | && bcmp|(s, loci|
|000039d0| 6e 70 75 74 2c 20 6c 6e | 29 20 21 3d 20 30 29 0d |nput, ln|) != 0).|
|000039e0| 09 09 09 09 72 65 74 75 | 72 6e 28 30 29 3b 0d 09 |....retu|rn(0);..|
|000039f0| 09 09 6c 6f 63 69 6e 70 | 75 74 20 2b 3d 20 6c 6e |..locinp|ut += ln|
|00003a00| 3b 0d 09 09 09 6e 65 78 | 74 63 68 61 72 20 3d 20 |;....nex|tchar = |
|00003a10| 2a 6c 6f 63 69 6e 70 75 | 74 3b 0d 09 09 09 62 72 |*locinpu|t;....br|
|00003a20| 65 61 6b 3b 0d 09 09 63 | 61 73 65 20 41 4e 59 4f |eak;...c|ase ANYO|
|00003a30| 46 3a 0d 09 09 09 73 20 | 3d 20 4f 50 45 52 41 4e |F:....s |= OPERAN|
|00003a40| 44 28 73 63 61 6e 29 3b | 0d 09 09 09 69 66 20 28 |D(scan);|....if (|
|00003a50| 6e 65 78 74 63 68 61 72 | 20 3c 20 30 29 0d 09 09 |nextchar| < 0)...|
|00003a60| 09 09 6e 65 78 74 63 68 | 61 72 20 3d 20 55 43 48 |..nextch|ar = UCH|
|00003a70| 41 52 41 54 28 6c 6f 63 | 69 6e 70 75 74 29 3b 0d |ARAT(loc|input);.|
|00003a80| 09 09 09 69 66 20 28 73 | 5b 6e 65 78 74 63 68 61 |...if (s|[nextcha|
|00003a90| 72 20 3e 3e 20 33 5d 20 | 26 20 28 31 20 3c 3c 20 |r >> 3] |& (1 << |
|00003aa0| 28 6e 65 78 74 63 68 61 | 72 26 37 29 29 29 0d 09 |(nextcha|r&7)))..|
|00003ab0| 09 09 09 72 65 74 75 72 | 6e 28 30 29 3b 0d 09 09 |...retur|n(0);...|
|00003ac0| 09 69 66 20 28 21 6e 65 | 78 74 63 68 61 72 20 26 |.if (!ne|xtchar &|
|00003ad0| 26 20 6c 6f 63 69 6e 70 | 75 74 20 3e 3d 20 72 65 |& locinp|ut >= re|
|00003ae0| 67 65 6f 6c 29 0d 09 09 | 09 09 72 65 74 75 72 6e |geol)...|..return|
|00003af0| 20 30 3b 0d 09 09 09 6e | 65 78 74 63 68 61 72 20 | 0;....n|extchar |
|00003b00| 3d 20 2a 2b 2b 6c 6f 63 | 69 6e 70 75 74 3b 0d 09 |= *++loc|input;..|
|00003b10| 09 09 62 72 65 61 6b 3b | 0d 09 09 63 61 73 65 20 |..break;|...case |
|00003b20| 41 4c 4e 55 4d 3a 0d 09 | 09 09 69 66 20 28 21 6e |ALNUM:..|..if (!n|
|00003b30| 65 78 74 63 68 61 72 29 | 0d 09 09 09 09 72 65 74 |extchar)|.....ret|
|00003b40| 75 72 6e 28 30 29 3b 0d | 09 09 09 69 66 20 28 21 |urn(0);.|...if (!|
|00003b50| 69 73 41 4c 4e 55 4d 28 | 6e 65 78 74 63 68 61 72 |isALNUM(|nextchar|
|00003b60| 29 29 0d 09 09 09 09 72 | 65 74 75 72 6e 28 30 29 |)).....r|eturn(0)|
|00003b70| 3b 0d 09 09 09 6e 65 78 | 74 63 68 61 72 20 3d 20 |;....nex|tchar = |
|00003b80| 2a 2b 2b 6c 6f 63 69 6e | 70 75 74 3b 0d 09 09 09 |*++locin|put;....|
|00003b90| 62 72 65 61 6b 3b 0d 09 | 09 63 61 73 65 20 4e 41 |break;..|.case NA|
|00003ba0| 4c 4e 55 4d 3a 0d 09 09 | 09 69 66 20 28 21 6e 65 |LNUM:...|.if (!ne|
|00003bb0| 78 74 63 68 61 72 20 26 | 26 20 6c 6f 63 69 6e 70 |xtchar &|& locinp|
|00003bc0| 75 74 20 3e 3d 20 72 65 | 67 65 6f 6c 29 0d 09 09 |ut >= re|geol)...|
|00003bd0| 09 09 72 65 74 75 72 6e | 28 30 29 3b 0d 09 09 09 |..return|(0);....|
|00003be0| 69 66 20 28 69 73 41 4c | 4e 55 4d 28 6e 65 78 74 |if (isAL|NUM(next|
|00003bf0| 63 68 61 72 29 29 0d 09 | 09 09 09 72 65 74 75 72 |char))..|...retur|
|00003c00| 6e 28 30 29 3b 0d 09 09 | 09 6e 65 78 74 63 68 61 |n(0);...|.nextcha|
|00003c10| 72 20 3d 20 2a 2b 2b 6c | 6f 63 69 6e 70 75 74 3b |r = *++l|ocinput;|
|00003c20| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 |....brea|k;...cas|
|00003c30| 65 20 4e 42 4f 55 4e 44 | 3a 0d 09 09 63 61 73 65 |e NBOUND|:...case|
|00003c40| 20 42 4f 55 4e 44 3a 0d | 09 09 09 69 66 20 28 6c | BOUND:.|...if (l|
|00003c50| 6f 63 69 6e 70 75 74 20 | 3d 3d 20 72 65 67 62 6f |ocinput |== regbo|
|00003c60| 6c 29 09 2f 2a 20 77 61 | 73 20 6c 61 73 74 20 63 |l)./* wa|s last c|
|00003c70| 68 61 72 20 69 6e 20 77 | 6f 72 64 3f 20 2a 2f 0d |har in w|ord? */.|
|00003c80| 09 09 09 09 6c 6e 20 3d | 20 69 73 41 4c 4e 55 4d |....ln =| isALNUM|
|00003c90| 28 72 65 67 70 72 65 76 | 29 3b 0d 09 09 09 65 6c |(regprev|);....el|
|00003ca0| 73 65 20 0d 09 09 09 09 | 6c 6e 20 3d 20 69 73 41 |se .....|ln = isA|
|00003cb0| 4c 4e 55 4d 28 6c 6f 63 | 69 6e 70 75 74 5b 2d 31 |LNUM(loc|input[-1|
|00003cc0| 5d 29 3b 0d 09 09 09 6e | 20 3d 20 69 73 41 4c 4e |]);....n| = isALN|
|00003cd0| 55 4d 28 6e 65 78 74 63 | 68 61 72 29 3b 20 2f 2a |UM(nextc|har); /*|
|00003ce0| 20 69 73 20 6e 65 78 74 | 20 63 68 61 72 20 69 6e | is next| char in|
|00003cf0| 20 77 6f 72 64 3f 20 2a | 2f 0d 09 09 09 69 66 20 | word? *|/....if |
|00003d00| 28 28 6c 6e 20 3d 3d 20 | 6e 29 20 3d 3d 20 28 4f |((ln == |n) == (O|
|00003d10| 50 28 73 63 61 6e 29 20 | 3d 3d 20 42 4f 55 4e 44 |P(scan) |== BOUND|
|00003d20| 29 29 0d 09 09 09 09 72 | 65 74 75 72 6e 28 30 29 |)).....r|eturn(0)|
|00003d30| 3b 0d 09 09 09 62 72 65 | 61 6b 3b 0d 09 09 63 61 |;....bre|ak;...ca|
|00003d40| 73 65 20 53 50 41 43 45 | 3a 0d 09 09 09 69 66 20 |se SPACE|:....if |
|00003d50| 28 21 6e 65 78 74 63 68 | 61 72 20 26 26 20 6c 6f |(!nextch|ar && lo|
|00003d60| 63 69 6e 70 75 74 20 3e | 3d 20 72 65 67 65 6f 6c |cinput >|= regeol|
|00003d70| 29 0d 09 09 09 09 72 65 | 74 75 72 6e 28 30 29 3b |).....re|turn(0);|
|00003d80| 0d 09 09 09 69 66 20 28 | 21 69 73 53 50 41 43 45 |....if (|!isSPACE|
|00003d90| 28 6e 65 78 74 63 68 61 | 72 29 29 0d 09 09 09 09 |(nextcha|r)).....|
|00003da0| 72 65 74 75 72 6e 28 30 | 29 3b 0d 09 09 09 6e 65 |return(0|);....ne|
|00003db0| 78 74 63 68 61 72 20 3d | 20 2a 2b 2b 6c 6f 63 69 |xtchar =| *++loci|
|00003dc0| 6e 70 75 74 3b 0d 09 09 | 09 62 72 65 61 6b 3b 0d |nput;...|.break;.|
|00003dd0| 09 09 63 61 73 65 20 4e | 53 50 41 43 45 3a 0d 09 |..case N|SPACE:..|
|00003de0| 09 09 69 66 20 28 21 6e | 65 78 74 63 68 61 72 29 |..if (!n|extchar)|
|00003df0| 0d 09 09 09 09 72 65 74 | 75 72 6e 28 30 29 3b 0d |.....ret|urn(0);.|
|00003e00| 09 09 09 69 66 20 28 69 | 73 53 50 41 43 45 28 6e |...if (i|sSPACE(n|
|00003e10| 65 78 74 63 68 61 72 29 | 29 0d 09 09 09 09 72 65 |extchar)|).....re|
|00003e20| 74 75 72 6e 28 30 29 3b | 0d 09 09 09 6e 65 78 74 |turn(0);|....next|
|00003e30| 63 68 61 72 20 3d 20 2a | 2b 2b 6c 6f 63 69 6e 70 |char = *|++locinp|
|00003e40| 75 74 3b 0d 09 09 09 62 | 72 65 61 6b 3b 0d 09 09 |ut;....b|reak;...|
|00003e50| 63 61 73 65 20 44 49 47 | 49 54 3a 0d 09 09 09 69 |case DIG|IT:....i|
|00003e60| 66 20 28 21 69 73 44 49 | 47 49 54 28 6e 65 78 74 |f (!isDI|GIT(next|
|00003e70| 63 68 61 72 29 29 0d 09 | 09 09 09 72 65 74 75 72 |char))..|...retur|
|00003e80| 6e 28 30 29 3b 0d 09 09 | 09 6e 65 78 74 63 68 61 |n(0);...|.nextcha|
|00003e90| 72 20 3d 20 2a 2b 2b 6c | 6f 63 69 6e 70 75 74 3b |r = *++l|ocinput;|
|00003ea0| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 |....brea|k;...cas|
|00003eb0| 65 20 4e 44 49 47 49 54 | 3a 0d 09 09 09 69 66 20 |e NDIGIT|:....if |
|00003ec0| 28 21 6e 65 78 74 63 68 | 61 72 20 26 26 20 6c 6f |(!nextch|ar && lo|
|00003ed0| 63 69 6e 70 75 74 20 3e | 3d 20 72 65 67 65 6f 6c |cinput >|= regeol|
|00003ee0| 29 0d 09 09 09 09 72 65 | 74 75 72 6e 28 30 29 3b |).....re|turn(0);|
|00003ef0| 0d 09 09 09 69 66 20 28 | 69 73 44 49 47 49 54 28 |....if (|isDIGIT(|
|00003f00| 6e 65 78 74 63 68 61 72 | 29 29 0d 09 09 09 09 72 |nextchar|)).....r|
|00003f10| 65 74 75 72 6e 28 30 29 | 3b 0d 09 09 09 6e 65 78 |eturn(0)|;....nex|
|00003f20| 74 63 68 61 72 20 3d 20 | 2a 2b 2b 6c 6f 63 69 6e |tchar = |*++locin|
|00003f30| 70 75 74 3b 0d 09 09 09 | 62 72 65 61 6b 3b 0d 09 |put;....|break;..|
|00003f40| 09 63 61 73 65 20 52 45 | 46 3a 0d 09 09 09 6e 20 |.case RE|F:....n |
|00003f50| 3d 20 41 52 47 31 28 73 | 63 61 6e 29 3b 20 20 2f |= ARG1(s|can); /|
|00003f60| 2a 20 77 68 69 63 68 20 | 70 61 72 65 6e 20 70 61 |* which |paren pa|
|00003f70| 69 72 20 2a 2f 0d 09 09 | 09 73 20 3d 20 72 65 67 |ir */...|.s = reg|
|00003f80| 6d 79 73 74 61 72 74 70 | 5b 6e 5d 3b 0d 09 09 09 |mystartp|[n];....|
|00003f90| 69 66 20 28 21 73 29 0d | 09 09 09 20 20 20 20 72 |if (!s).|... r|
|00003fa0| 65 74 75 72 6e 28 30 29 | 3b 0d 09 09 09 69 66 20 |eturn(0)|;....if |
|00003fb0| 28 21 72 65 67 6d 79 65 | 6e 64 70 5b 6e 5d 29 0d |(!regmye|ndp[n]).|
|00003fc0| 09 09 09 20 20 20 20 72 | 65 74 75 72 6e 28 30 29 |... r|eturn(0)|
|00003fd0| 3b 0d 09 09 09 69 66 20 | 28 73 20 3d 3d 20 72 65 |;....if |(s == re|
|00003fe0| 67 6d 79 65 6e 64 70 5b | 6e 5d 29 0d 09 09 09 20 |gmyendp[|n]).... |
|00003ff0| 20 20 20 62 72 65 61 6b | 3b 0d 09 09 09 2f 2a 20 | break|;..../* |
|00004000| 49 6e 6c 69 6e 65 20 74 | 68 65 20 66 69 72 73 74 |Inline t|he first|
|00004010| 20 63 68 61 72 61 63 74 | 65 72 2c 20 66 6f 72 20 | charact|er, for |
|00004020| 73 70 65 65 64 2e 20 2a | 2f 0d 09 09 09 69 66 20 |speed. *|/....if |
|00004030| 28 2a 73 20 21 3d 20 6e | 65 78 74 63 68 61 72 29 |(*s != n|extchar)|
|00004040| 0d 09 09 09 09 72 65 74 | 75 72 6e 28 30 29 3b 0d |.....ret|urn(0);.|
|00004050| 09 09 09 6c 6e 20 3d 20 | 72 65 67 6d 79 65 6e 64 |...ln = |regmyend|
|00004060| 70 5b 6e 5d 20 2d 20 73 | 3b 0d 09 09 09 69 66 20 |p[n] - s|;....if |
|00004070| 28 6c 6f 63 69 6e 70 75 | 74 20 2b 20 6c 6e 20 3e |(locinpu|t + ln >|
|00004080| 20 72 65 67 65 6f 6c 29 | 0d 09 09 09 09 72 65 74 | regeol)|.....ret|
|00004090| 75 72 6e 20 30 3b 0d 09 | 09 09 69 66 20 28 6c 6e |urn 0;..|..if (ln|
|000040a0| 20 3e 20 31 20 26 26 20 | 62 63 6d 70 28 73 2c 20 | > 1 && |bcmp(s, |
|000040b0| 6c 6f 63 69 6e 70 75 74 | 2c 20 6c 6e 29 20 21 3d |locinput|, ln) !=|
|000040c0| 20 30 29 0d 09 09 09 09 | 72 65 74 75 72 6e 28 30 | 0).....|return(0|
|000040d0| 29 3b 0d 09 09 09 6c 6f | 63 69 6e 70 75 74 20 2b |);....lo|cinput +|
|000040e0| 3d 20 6c 6e 3b 0d 09 09 | 09 6e 65 78 74 63 68 61 |= ln;...|.nextcha|
|000040f0| 72 20 3d 20 2a 6c 6f 63 | 69 6e 70 75 74 3b 0d 09 |r = *loc|input;..|
|00004100| 09 09 62 72 65 61 6b 3b | 0d 0d 09 09 63 61 73 65 |..break;|....case|
|00004110| 20 4e 4f 54 48 49 4e 47 | 3a 0d 09 09 09 62 72 65 | NOTHING|:....bre|
|00004120| 61 6b 3b 0d 09 09 63 61 | 73 65 20 42 41 43 4b 3a |ak;...ca|se BACK:|
|00004130| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 09 09 63 61 73 |....brea|k;...cas|
|00004140| 65 20 4f 50 45 4e 3a 0d | 09 09 09 6e 20 3d 20 41 |e OPEN:.|...n = A|
|00004150| 52 47 31 28 73 63 61 6e | 29 3b 20 20 2f 2a 20 77 |RG1(scan|); /* w|
|00004160| 68 69 63 68 20 70 61 72 | 65 6e 20 70 61 69 72 20 |hich par|en pair |
|00004170| 2a 2f 0d 09 09 09 72 65 | 67 69 6e 70 75 74 20 3d |*/....re|ginput =|
|00004180| 20 6c 6f 63 69 6e 70 75 | 74 3b 0d 0d 09 09 09 72 | locinpu|t;.....r|
|00004190| 65 67 6d 79 73 74 61 72 | 74 70 5b 6e 5d 20 3d 20 |egmystar|tp[n] = |
|000041a0| 6c 6f 63 69 6e 70 75 74 | 3b 09 2f 2a 20 66 6f 72 |locinput|;./* for|
|000041b0| 20 52 45 46 20 2a 2f 0d | 09 09 09 69 66 20 28 72 | REF */.|...if (r|
|000041c0| 65 67 6d 61 74 63 68 28 | 6e 65 78 74 29 29 20 7b |egmatch(|next)) {|
|000041d0| 0d 09 09 09 09 2f 2a 0d | 09 09 09 09 20 2a 20 44 |...../*.|.... * D|
|000041e0| 6f 6e 27 74 20 73 65 74 | 20 73 74 61 72 74 70 20 |on't set| startp |
|000041f0| 69 66 20 73 6f 6d 65 20 | 6c 61 74 65 72 0d 09 09 |if some |later...|
|00004200| 09 09 20 2a 20 69 6e 76 | 6f 63 61 74 69 6f 6e 20 |.. * inv|ocation |
|00004210| 6f 66 20 74 68 65 20 73 | 61 6d 65 20 70 61 72 65 |of the s|ame pare|
|00004220| 6e 74 68 65 73 65 73 0d | 09 09 09 09 20 2a 20 61 |ntheses.|.... * a|
|00004230| 6c 72 65 61 64 79 20 68 | 61 73 2e 0d 09 09 09 09 |lready h|as......|
|00004240| 20 2a 2f 0d 09 09 09 09 | 69 66 20 28 72 65 67 73 | */.....|if (regs|
|00004250| 74 61 72 74 70 5b 6e 5d | 20 3d 3d 20 4e 55 4c 4c |tartp[n]| == NULL|
|00004260| 29 0d 09 09 09 09 09 72 | 65 67 73 74 61 72 74 70 |)......r|egstartp|
|00004270| 5b 6e 5d 20 3d 20 6c 6f | 63 69 6e 70 75 74 3b 0d |[n] = lo|cinput;.|
|00004280| 09 09 09 09 72 65 74 75 | 72 6e 28 31 29 3b 0d 09 |....retu|rn(1);..|
|00004290| 09 09 7d 20 65 6c 73 65 | 0d 09 09 09 09 72 65 74 |..} else|.....ret|
|000042a0| 75 72 6e 28 30 29 3b 0d | 09 09 09 2f 2a 20 4e 4f |urn(0);.|.../* NO|
|000042b0| 54 52 45 41 43 48 45 44 | 20 2a 2f 0d 09 09 63 61 |TREACHED| */...ca|
|000042c0| 73 65 20 43 4c 4f 53 45 | 3a 20 7b 0d 09 09 09 09 |se CLOSE|: {.....|
|000042d0| 6e 20 3d 20 41 52 47 31 | 28 73 63 61 6e 29 3b 20 |n = ARG1|(scan); |
|000042e0| 20 2f 2a 20 77 68 69 63 | 68 20 70 61 72 65 6e 20 | /* whic|h paren |
|000042f0| 70 61 69 72 20 2a 2f 0d | 09 09 09 09 72 65 67 69 |pair */.|....regi|
|00004300| 6e 70 75 74 20 3d 20 6c | 6f 63 69 6e 70 75 74 3b |nput = l|ocinput;|
|00004310| 0d 0d 09 09 09 09 72 65 | 67 6d 79 65 6e 64 70 5b |......re|gmyendp[|
|00004320| 6e 5d 20 3d 20 6c 6f 63 | 69 6e 70 75 74 3b 09 2f |n] = loc|input;./|
|00004330| 2a 20 66 6f 72 20 52 45 | 46 20 2a 2f 0d 09 09 09 |* for RE|F */....|
|00004340| 09 69 66 20 28 72 65 67 | 6d 61 74 63 68 28 6e 65 |.if (reg|match(ne|
|00004350| 78 74 29 29 20 7b 0d 09 | 09 09 09 09 2f 2a 0d 09 |xt)) {..|..../*..|
|00004360| 09 09 09 09 20 2a 20 44 | 6f 6e 27 74 20 73 65 74 |.... * D|on't set|
|00004370| 20 65 6e 64 70 20 69 66 | 20 73 6f 6d 65 20 6c 61 | endp if| some la|
|00004380| 74 65 72 0d 09 09 09 09 | 09 20 2a 20 69 6e 76 6f |ter.....|. * invo|
|00004390| 63 61 74 69 6f 6e 20 6f | 66 20 74 68 65 20 73 61 |cation o|f the sa|
|000043a0| 6d 65 20 70 61 72 65 6e | 74 68 65 73 65 73 0d 09 |me paren|theses..|
|000043b0| 09 09 09 09 20 2a 20 61 | 6c 72 65 61 64 79 20 68 |.... * a|lready h|
|000043c0| 61 73 2e 0d 09 09 09 09 | 09 20 2a 2f 0d 09 09 09 |as......|. */....|
|000043d0| 09 09 69 66 20 28 72 65 | 67 65 6e 64 70 5b 6e 5d |..if (re|gendp[n]|
|000043e0| 20 3d 3d 20 4e 55 4c 4c | 29 20 7b 0d 09 09 09 09 | == NULL|) {.....|
|000043f0| 09 09 72 65 67 65 6e 64 | 70 5b 6e 5d 20 3d 20 6c |..regend|p[n] = l|
|00004400| 6f 63 69 6e 70 75 74 3b | 0d 09 09 09 09 09 09 69 |ocinput;|.......i|
|00004410| 66 20 28 6e 20 3e 20 2a | 72 65 67 6c 61 73 74 70 |f (n > *|reglastp|
|00004420| 61 72 65 6e 29 0d 09 09 | 09 09 09 09 20 20 20 20 |aren)...|.... |
|00004430| 2a 72 65 67 6c 61 73 74 | 70 61 72 65 6e 20 3d 20 |*reglast|paren = |
|00004440| 6e 3b 0d 09 09 09 09 09 | 7d 0d 09 09 09 09 09 72 |n;......|}......r|
|00004450| 65 74 75 72 6e 28 31 29 | 3b 0d 09 09 09 09 7d 20 |eturn(1)|;.....} |
|00004460| 65 6c 73 65 0d 09 09 09 | 09 09 72 65 74 75 72 6e |else....|..return|
|00004470| 28 30 29 3b 0d 09 09 09 | 7d 0d 09 09 09 2f 2a 4e |(0);....|}..../*N|
|00004480| 4f 54 52 45 41 43 48 45 | 44 2a 2f 0d 09 09 63 61 |OTREACHE|D*/...ca|
|00004490| 73 65 20 42 52 41 4e 43 | 48 3a 20 7b 0d 09 09 09 |se BRANC|H: {....|
|000044a0| 09 69 66 20 28 4f 50 28 | 6e 65 78 74 29 20 21 3d |.if (OP(|next) !=|
|000044b0| 20 42 52 41 4e 43 48 29 | 09 09 2f 2a 20 4e 6f 20 | BRANCH)|../* No |
|000044c0| 63 68 6f 69 63 65 2e 20 | 2a 2f 0d 09 09 09 09 09 |choice. |*/......|
|000044d0| 6e 65 78 74 20 3d 20 4e | 45 58 54 4f 50 45 52 28 |next = N|EXTOPER(|
|000044e0| 73 63 61 6e 29 3b 09 2f | 2a 20 41 76 6f 69 64 20 |scan);./|* Avoid |
|000044f0| 72 65 63 75 72 73 69 6f | 6e 2e 20 2a 2f 0d 09 09 |recursio|n. */...|
|00004500| 09 09 65 6c 73 65 20 7b | 0d 09 09 09 09 09 64 6f |..else {|......do|
|00004510| 20 7b 0d 09 09 09 09 09 | 09 72 65 67 69 6e 70 75 | {......|.reginpu|
|00004520| 74 20 3d 20 6c 6f 63 69 | 6e 70 75 74 3b 0d 09 09 |t = loci|nput;...|
|00004530| 09 09 09 09 69 66 20 28 | 72 65 67 6d 61 74 63 68 |....if (|regmatch|
|00004540| 28 4e 45 58 54 4f 50 45 | 52 28 73 63 61 6e 29 29 |(NEXTOPE|R(scan))|
|00004550| 29 0d 09 09 09 09 09 09 | 09 72 65 74 75 72 6e 28 |).......|.return(|
|00004560| 31 29 3b 0d 23 69 66 64 | 65 66 20 52 45 47 41 4c |1);.#ifd|ef REGAL|
|00004570| 49 47 4e 0d 09 09 09 09 | 09 09 2f 2a 53 55 50 50 |IGN.....|../*SUPP|
|00004580| 52 45 53 53 20 35 36 30 | 2a 2f 0d 09 09 09 09 09 |RESS 560|*/......|
|00004590| 09 69 66 20 28 6e 20 3d | 20 4e 45 58 54 28 73 63 |.if (n =| NEXT(sc|
|000045a0| 61 6e 29 29 0d 09 09 09 | 09 09 09 20 20 20 20 73 |an))....|... s|
|000045b0| 63 61 6e 20 2b 3d 20 6e | 3b 0d 09 09 09 09 09 09 |can += n|;.......|
|000045c0| 65 6c 73 65 0d 09 09 09 | 09 09 09 20 20 20 20 73 |else....|... s|
|000045d0| 63 61 6e 20 3d 20 4e 55 | 4c 4c 3b 0d 23 65 6c 73 |can = NU|LL;.#els|
|000045e0| 65 0d 09 09 09 09 09 09 | 73 63 61 6e 20 3d 20 72 |e.......|scan = r|
|000045f0| 65 67 6e 65 78 74 28 73 | 63 61 6e 29 3b 0d 23 65 |egnext(s|can);.#e|
|00004600| 6e 64 69 66 0d 09 09 09 | 09 09 7d 20 77 68 69 6c |ndif....|..} whil|
|00004610| 65 20 28 73 63 61 6e 20 | 21 3d 20 4e 55 4c 4c 20 |e (scan |!= NULL |
|00004620| 26 26 20 4f 50 28 73 63 | 61 6e 29 20 3d 3d 20 42 |&& OP(sc|an) == B|
|00004630| 52 41 4e 43 48 29 3b 0d | 09 09 09 09 09 72 65 74 |RANCH);.|.....ret|
|00004640| 75 72 6e 28 30 29 3b 0d | 09 09 09 09 09 2f 2a 20 |urn(0);.|...../* |
|00004650| 4e 4f 54 52 45 41 43 48 | 45 44 20 2a 2f 0d 09 09 |NOTREACH|ED */...|
|00004660| 09 09 7d 0d 09 09 09 7d | 0d 09 09 09 62 72 65 61 |..}....}|....brea|
|00004670| 6b 3b 0d 09 09 63 61 73 | 65 20 43 55 52 4c 59 3a |k;...cas|e CURLY:|
|00004680| 0d 09 09 09 6c 6e 20 3d | 20 41 52 47 31 28 73 63 |....ln =| ARG1(sc|
|00004690| 61 6e 29 3b 20 20 2f 2a | 20 6d 69 6e 20 74 6f 20 |an); /*| min to |
|000046a0| 6d 61 74 63 68 20 2a 2f | 0d 09 09 09 6e 20 20 3d |match */|....n =|
|000046b0| 20 41 52 47 32 28 73 63 | 61 6e 29 3b 20 20 2f 2a | ARG2(sc|an); /*|
|000046c0| 20 6d 61 78 20 74 6f 20 | 6d 61 74 63 68 20 2a 2f | max to |match */|
|000046d0| 0d 09 09 09 73 63 61 6e | 20 3d 20 4e 45 58 54 4f |....scan| = NEXTO|
|000046e0| 50 45 52 28 73 63 61 6e | 29 20 2b 20 34 3b 0d 09 |PER(scan|) + 4;..|
|000046f0| 09 09 67 6f 74 6f 20 72 | 65 70 65 61 74 3b 0d 09 |..goto r|epeat;..|
|00004700| 09 63 61 73 65 20 53 54 | 41 52 3a 0d 09 09 09 6c |.case ST|AR:....l|
|00004710| 6e 20 3d 20 30 3b 0d 09 | 09 09 6e 20 3d 20 33 32 |n = 0;..|..n = 32|
|00004720| 37 36 37 3b 0d 09 09 09 | 73 63 61 6e 20 3d 20 4e |767;....|scan = N|
|00004730| 45 58 54 4f 50 45 52 28 | 73 63 61 6e 29 3b 0d 09 |EXTOPER(|scan);..|
|00004740| 09 09 67 6f 74 6f 20 72 | 65 70 65 61 74 3b 0d 09 |..goto r|epeat;..|
|00004750| 09 63 61 73 65 20 50 4c | 55 53 3a 0d 09 09 09 2f |.case PL|US:..../|
|00004760| 2a 0d 09 09 09 20 2a 20 | 4c 6f 6f 6b 61 68 65 61 |*.... * |Lookahea|
|00004770| 64 20 74 6f 20 61 76 6f | 69 64 20 75 73 65 6c 65 |d to avo|id usele|
|00004780| 73 73 20 6d 61 74 63 68 | 20 61 74 74 65 6d 70 74 |ss match| attempt|
|00004790| 73 0d 09 09 09 20 2a 20 | 77 68 65 6e 20 77 65 20 |s.... * |when we |
|000047a0| 6b 6e 6f 77 20 77 68 61 | 74 20 63 68 61 72 61 63 |know wha|t charac|
|000047b0| 74 65 72 20 63 6f 6d 65 | 73 20 6e 65 78 74 2e 0d |ter come|s next..|
|000047c0| 09 09 09 20 2a 2f 0d 09 | 09 09 6c 6e 20 3d 20 31 |... */..|..ln = 1|
|000047d0| 3b 0d 09 09 09 6e 20 3d | 20 33 32 37 36 37 3b 0d |;....n =| 32767;.|
|000047e0| 09 09 09 73 63 61 6e 20 | 3d 20 4e 45 58 54 4f 50 |...scan |= NEXTOP|
|000047f0| 45 52 28 73 63 61 6e 29 | 3b 0d 09 09 20 20 20 20 |ER(scan)|;... |
|00004800| 72 65 70 65 61 74 3a 0d | 09 09 09 69 66 20 28 4f |repeat:.|...if (O|
|00004810| 50 28 6e 65 78 74 29 20 | 3d 3d 20 45 58 41 43 54 |P(next) |== EXACT|
|00004820| 4c 59 29 0d 09 09 09 09 | 6e 65 78 74 63 68 61 72 |LY).....|nextchar|
|00004830| 20 3d 20 2a 28 4f 50 45 | 52 41 4e 44 28 6e 65 78 | = *(OPE|RAND(nex|
|00004840| 74 29 2b 31 29 3b 0d 09 | 09 09 65 6c 73 65 0d 09 |t)+1);..|..else..|
|00004850| 09 09 09 6e 65 78 74 63 | 68 61 72 20 3d 20 2d 31 |...nextc|har = -1|
|00004860| 30 30 30 3b 0d 09 09 09 | 72 65 67 69 6e 70 75 74 |000;....|reginput|
|00004870| 20 3d 20 6c 6f 63 69 6e | 70 75 74 3b 0d 09 09 09 | = locin|put;....|
|00004880| 6e 20 3d 20 72 65 67 72 | 65 70 65 61 74 28 73 63 |n = regr|epeat(sc|
|00004890| 61 6e 2c 20 6e 29 3b 0d | 09 09 09 69 66 20 28 21 |an, n);.|...if (!|
|000048a0| 6d 75 6c 74 69 6c 69 6e | 65 20 26 26 20 4f 50 28 |multilin|e && OP(|
|000048b0| 6e 65 78 74 29 20 3d 3d | 20 45 4f 4c 20 26 26 20 |next) ==| EOL && |
|000048c0| 6c 6e 20 3c 20 6e 29 0d | 09 09 09 20 20 20 20 6c |ln < n).|... l|
|000048d0| 6e 20 3d 20 6e 3b 09 09 | 09 2f 2a 20 77 68 79 20 |n = n;..|./* why |
|000048e0| 62 61 63 6b 20 6f 66 66 | 3f 20 2a 2f 0d 09 09 09 |back off|? */....|
|000048f0| 77 68 69 6c 65 20 28 6e | 20 3e 3d 20 6c 6e 29 20 |while (n| >= ln) |
|00004900| 7b 0d 09 09 09 09 2f 2a | 20 49 66 20 69 74 20 63 |{...../*| If it c|
|00004910| 6f 75 6c 64 20 77 6f 72 | 6b 2c 20 74 72 79 20 69 |ould wor|k, try i|
|00004920| 74 2e 20 2a 2f 0d 09 09 | 09 09 69 66 20 28 6e 65 |t. */...|..if (ne|
|00004930| 78 74 63 68 61 72 20 3d | 3d 20 2d 31 30 30 30 20 |xtchar =|= -1000 |
|00004940| 7c 7c 20 2a 72 65 67 69 | 6e 70 75 74 20 3d 3d 20 ||| *regi|nput == |
|00004950| 6e 65 78 74 63 68 61 72 | 29 0d 09 09 09 09 09 69 |nextchar|)......i|
|00004960| 66 20 28 72 65 67 6d 61 | 74 63 68 28 6e 65 78 74 |f (regma|tch(next|
|00004970| 29 29 0d 09 09 09 09 09 | 09 72 65 74 75 72 6e 28 |))......|.return(|
|00004980| 31 29 3b 0d 09 09 09 09 | 2f 2a 20 43 6f 75 6c 64 |1);.....|/* Could|
|00004990| 6e 27 74 20 6f 72 20 64 | 69 64 6e 27 74 20 2d 2d |n't or d|idn't --|
|000049a0| 20 62 61 63 6b 20 75 70 | 2e 20 2a 2f 0d 09 09 09 | back up|. */....|
|000049b0| 09 6e 2d 2d 3b 0d 09 09 | 09 09 72 65 67 69 6e 70 |.n--;...|..reginp|
|000049c0| 75 74 20 3d 20 6c 6f 63 | 69 6e 70 75 74 20 2b 20 |ut = loc|input + |
|000049d0| 6e 3b 0d 09 09 09 7d 0d | 09 09 09 72 65 74 75 72 |n;....}.|...retur|
|000049e0| 6e 28 30 29 3b 0d 09 09 | 63 61 73 65 20 45 4e 44 |n(0);...|case END|
|000049f0| 3a 0d 09 09 09 72 65 67 | 69 6e 70 75 74 20 3d 20 |:....reg|input = |
|00004a00| 6c 6f 63 69 6e 70 75 74 | 3b 20 2f 2a 20 70 75 74 |locinput|; /* put|
|00004a10| 20 77 68 65 72 65 20 72 | 65 67 74 72 79 20 63 61 | where r|egtry ca|
|00004a20| 6e 20 66 69 6e 64 20 69 | 74 20 2a 2f 0d 09 09 09 |n find i|t */....|
|00004a30| 72 65 74 75 72 6e 28 31 | 29 3b 09 2f 2a 20 53 75 |return(1|);./* Su|
|00004a40| 63 63 65 73 73 21 20 2a | 2f 0d 09 09 64 65 66 61 |ccess! *|/...defa|
|00004a50| 75 6c 74 3a 0d 09 09 09 | 70 72 69 6e 74 66 28 22 |ult:....|printf("|
|00004a60| 25 78 20 25 64 5c 6e 22 | 2c 73 63 61 6e 2c 73 63 |%x %d\n"|,scan,sc|
|00004a70| 61 6e 5b 31 5d 29 3b 0d | 09 09 09 46 41 49 4c 28 |an[1]);.|...FAIL(|
|00004a80| 22 72 65 67 65 78 70 20 | 6d 65 6d 6f 72 79 20 63 |"regexp |memory c|
|00004a90| 6f 72 72 75 70 74 69 6f | 6e 22 29 3b 0d 09 09 7d |orruptio|n");...}|
|00004aa0| 0d 0d 09 09 73 63 61 6e | 20 3d 20 6e 65 78 74 3b |....scan| = next;|
|00004ab0| 0d 09 7d 0d 0d 09 2f 2a | 0d 09 20 2a 20 57 65 20 |..}.../*|.. * We |
|00004ac0| 67 65 74 20 68 65 72 65 | 20 6f 6e 6c 79 20 69 66 |get here| only if|
|00004ad0| 20 74 68 65 72 65 27 73 | 20 74 72 6f 75 62 6c 65 | there's| trouble|
|00004ae0| 20 2d 2d 20 6e 6f 72 6d | 61 6c 6c 79 20 22 63 61 | -- norm|ally "ca|
|00004af0| 73 65 20 45 4e 44 22 20 | 69 73 0d 09 20 2a 20 74 |se END" |is.. * t|
|00004b00| 68 65 20 74 65 72 6d 69 | 6e 61 74 69 6e 67 20 70 |he termi|nating p|
|00004b10| 6f 69 6e 74 2e 0d 09 20 | 2a 2f 0d 09 46 41 49 4c |oint... |*/..FAIL|
|00004b20| 28 22 63 6f 72 72 75 70 | 74 65 64 20 72 65 67 65 |("corrup|ted rege|
|00004b30| 78 70 20 70 6f 69 6e 74 | 65 72 73 22 29 3b 0d 09 |xp point|ers");..|
|00004b40| 2f 2a 4e 4f 54 52 45 41 | 43 48 45 44 2a 2f 0d 23 |/*NOTREA|CHED*/.#|
|00004b50| 69 66 64 65 66 20 6c 69 | 6e 74 0d 09 72 65 74 75 |ifdef li|nt..retu|
|00004b60| 72 6e 20 30 3b 0d 23 65 | 6e 64 69 66 0d 7d 0d 0d |rn 0;.#e|ndif.}..|
|00004b70| 2f 2a 0d 20 2d 20 72 65 | 67 72 65 70 65 61 74 20 |/*. - re|grepeat |
|00004b80| 2d 20 72 65 70 65 61 74 | 65 64 6c 79 20 6d 61 74 |- repeat|edly mat|
|00004b90| 63 68 20 73 6f 6d 65 74 | 68 69 6e 67 20 73 69 6d |ch somet|hing sim|
|00004ba0| 70 6c 65 2c 20 72 65 70 | 6f 72 74 20 68 6f 77 20 |ple, rep|ort how |
|00004bb0| 6d 61 6e 79 0d 20 2a 2f | 0d 2f 2a 0d 20 2a 20 5b |many. */|./*. * [|
|00004bc0| 54 68 69 73 20 72 6f 75 | 74 69 6e 65 20 6e 6f 77 |This rou|tine now|
|00004bd0| 20 61 73 73 75 6d 65 73 | 20 74 68 61 74 20 69 74 | assumes| that it|
|00004be0| 20 77 69 6c 6c 20 6f 6e | 6c 79 20 6d 61 74 63 68 | will on|ly match|
|00004bf0| 20 6f 6e 20 74 68 69 6e | 67 73 20 6f 66 20 6c 65 | on thin|gs of le|
|00004c00| 6e 67 74 68 20 31 2e 0d | 20 2a 20 54 68 61 74 20 |ngth 1..| * That |
|00004c10| 77 61 73 20 74 72 75 65 | 20 62 65 66 6f 72 65 2c |was true| before,|
|00004c20| 20 62 75 74 20 6e 6f 77 | 20 77 65 20 61 73 73 75 | but now| we assu|
|00004c30| 6d 65 20 73 63 61 6e 20 | 2d 20 72 65 67 69 6e 70 |me scan |- reginp|
|00004c40| 75 74 20 69 73 20 74 68 | 65 20 63 6f 75 6e 74 2c |ut is th|e count,|
|00004c50| 0d 20 2a 20 72 61 74 68 | 65 72 20 74 68 61 6e 20 |. * rath|er than |
|00004c60| 69 6e 63 72 65 6d 65 6e | 74 69 6e 67 20 63 6f 75 |incremen|ting cou|
|00004c70| 6e 74 20 6f 6e 20 65 76 | 65 72 79 20 63 68 61 72 |nt on ev|ery char|
|00004c80| 61 63 74 65 72 2e 5d 0d | 20 2a 2f 0d 73 74 61 74 |acter.].| */.stat|
|00004c90| 69 63 20 69 6e 74 0d 72 | 65 67 72 65 70 65 61 74 |ic int.r|egrepeat|
|00004ca0| 28 70 2c 20 6d 61 78 29 | 0d 63 68 61 72 20 2a 70 |(p, max)|.char *p|
|00004cb0| 3b 0d 69 6e 74 20 6d 61 | 78 3b 0d 7b 0d 09 72 65 |;.int ma|x;.{..re|
|00004cc0| 67 69 73 74 65 72 20 63 | 68 61 72 20 2a 73 63 61 |gister c|har *sca|
|00004cd0| 6e 3b 0d 09 72 65 67 69 | 73 74 65 72 20 63 68 61 |n;..regi|ster cha|
|00004ce0| 72 20 2a 6f 70 6e 64 3b | 0d 09 72 65 67 69 73 74 |r *opnd;|..regist|
|00004cf0| 65 72 20 69 6e 74 20 63 | 3b 0d 09 72 65 67 69 73 |er int c|;..regis|
|00004d00| 74 65 72 20 63 68 61 72 | 20 2a 6c 6f 63 65 6f 6c |ter char| *loceol|
|00004d10| 20 3d 20 72 65 67 65 6f | 6c 3b 0d 0d 09 73 63 61 | = regeo|l;...sca|
|00004d20| 6e 20 3d 20 72 65 67 69 | 6e 70 75 74 3b 0d 09 69 |n = regi|nput;..i|
|00004d30| 66 20 28 6d 61 78 20 21 | 3d 20 33 32 37 36 37 20 |f (max !|= 32767 |
|00004d40| 26 26 20 6d 61 78 20 3c | 20 6c 6f 63 65 6f 6c 20 |&& max <| loceol |
|00004d50| 2d 20 73 63 61 6e 29 0d | 09 20 20 20 20 6c 6f 63 |- scan).|. loc|
|00004d60| 65 6f 6c 20 3d 20 73 63 | 61 6e 20 2b 20 6d 61 78 |eol = sc|an + max|
|00004d70| 3b 0d 09 6f 70 6e 64 20 | 3d 20 4f 50 45 52 41 4e |;..opnd |= OPERAN|
|00004d80| 44 28 70 29 3b 0d 09 73 | 77 69 74 63 68 20 28 4f |D(p);..s|witch (O|
|00004d90| 50 28 70 29 29 20 7b 0d | 09 63 61 73 65 20 41 4e |P(p)) {.|.case AN|
|00004da0| 59 3a 0d 09 09 77 68 69 | 6c 65 20 28 73 63 61 6e |Y:...whi|le (scan|
|00004db0| 20 3c 20 6c 6f 63 65 6f | 6c 20 26 26 20 2a 73 63 | < loceo|l && *sc|
|00004dc0| 61 6e 20 21 3d 20 27 5c | 6e 27 29 0d 09 09 09 73 |an != '\|n')....s|
|00004dd0| 63 61 6e 2b 2b 3b 0d 09 | 09 62 72 65 61 6b 3b 0d |can++;..|.break;.|
|00004de0| 09 63 61 73 65 20 45 58 | 41 43 54 4c 59 3a 09 09 |.case EX|ACTLY:..|
|00004df0| 2f 2a 20 6c 65 6e 67 74 | 68 20 6f 66 20 73 74 72 |/* lengt|h of str|
|00004e00| 69 6e 67 20 69 73 20 31 | 20 2a 2f 0d 09 09 6f 70 |ing is 1| */...op|
|00004e10| 6e 64 2b 2b 3b 0d 09 09 | 77 68 69 6c 65 20 28 73 |nd++;...|while (s|
|00004e20| 63 61 6e 20 3c 20 6c 6f | 63 65 6f 6c 20 26 26 20 |can < lo|ceol && |
|00004e30| 2a 6f 70 6e 64 20 3d 3d | 20 2a 73 63 61 6e 29 0d |*opnd ==| *scan).|
|00004e40| 09 09 09 73 63 61 6e 2b | 2b 3b 0d 09 09 62 72 65 |...scan+|+;...bre|
|00004e50| 61 6b 3b 0d 09 63 61 73 | 65 20 41 4e 59 4f 46 3a |ak;..cas|e ANYOF:|
|00004e60| 0d 09 09 63 20 3d 20 55 | 43 48 41 52 41 54 28 73 |...c = U|CHARAT(s|
|00004e70| 63 61 6e 29 3b 0d 09 09 | 77 68 69 6c 65 20 28 73 |can);...|while (s|
|00004e80| 63 61 6e 20 3c 20 6c 6f | 63 65 6f 6c 20 26 26 20 |can < lo|ceol && |
|00004e90| 21 28 6f 70 6e 64 5b 63 | 20 3e 3e 20 33 5d 20 26 |!(opnd[c| >> 3] &|
|00004ea0| 20 28 31 20 3c 3c 20 28 | 63 20 26 20 37 29 29 29 | (1 << (|c & 7)))|
|00004eb0| 29 20 7b 0d 09 09 09 73 | 63 61 6e 2b 2b 3b 0d 09 |) {....s|can++;..|
|00004ec0| 09 09 63 20 3d 20 55 43 | 48 41 52 41 54 28 73 63 |..c = UC|HARAT(sc|
|00004ed0| 61 6e 29 3b 0d 09 09 7d | 0d 09 09 62 72 65 61 6b |an);...}|...break|
|00004ee0| 3b 0d 09 63 61 73 65 20 | 41 4c 4e 55 4d 3a 0d 09 |;..case |ALNUM:..|
|00004ef0| 09 77 68 69 6c 65 20 28 | 73 63 61 6e 20 3c 20 6c |.while (|scan < l|
|00004f00| 6f 63 65 6f 6c 20 26 26 | 20 69 73 41 4c 4e 55 4d |oceol &&| isALNUM|
|00004f10| 28 2a 73 63 61 6e 29 29 | 0d 09 09 09 73 63 61 6e |(*scan))|....scan|
|00004f20| 2b 2b 3b 0d 09 09 62 72 | 65 61 6b 3b 0d 09 63 61 |++;...br|eak;..ca|
|00004f30| 73 65 20 4e 41 4c 4e 55 | 4d 3a 0d 09 09 77 68 69 |se NALNU|M:...whi|
|00004f40| 6c 65 20 28 73 63 61 6e | 20 3c 20 6c 6f 63 65 6f |le (scan| < loceo|
|00004f50| 6c 20 26 26 20 21 69 73 | 41 4c 4e 55 4d 28 2a 73 |l && !is|ALNUM(*s|
|00004f60| 63 61 6e 29 29 0d 09 09 | 09 73 63 61 6e 2b 2b 3b |can))...|.scan++;|
|00004f70| 0d 09 09 62 72 65 61 6b | 3b 0d 09 63 61 73 65 20 |...break|;..case |
|00004f80| 53 50 41 43 45 3a 0d 09 | 09 77 68 69 6c 65 20 28 |SPACE:..|.while (|
|00004f90| 73 63 61 6e 20 3c 20 6c | 6f 63 65 6f 6c 20 26 26 |scan < l|oceol &&|
|00004fa0| 20 69 73 53 50 41 43 45 | 28 2a 73 63 61 6e 29 29 | isSPACE|(*scan))|
|00004fb0| 0d 09 09 09 73 63 61 6e | 2b 2b 3b 0d 09 09 62 72 |....scan|++;...br|
|00004fc0| 65 61 6b 3b 0d 09 63 61 | 73 65 20 4e 53 50 41 43 |eak;..ca|se NSPAC|
|00004fd0| 45 3a 0d 09 09 77 68 69 | 6c 65 20 28 73 63 61 6e |E:...whi|le (scan|
|00004fe0| 20 3c 20 6c 6f 63 65 6f | 6c 20 26 26 20 21 69 73 | < loceo|l && !is|
|00004ff0| 53 50 41 43 45 28 2a 73 | 63 61 6e 29 29 0d 09 09 |SPACE(*s|can))...|
|00005000| 09 73 63 61 6e 2b 2b 3b | 0d 09 09 62 72 65 61 6b |.scan++;|...break|
|00005010| 3b 0d 09 63 61 73 65 20 | 44 49 47 49 54 3a 0d 09 |;..case |DIGIT:..|
|00005020| 09 77 68 69 6c 65 20 28 | 73 63 61 6e 20 3c 20 6c |.while (|scan < l|
|00005030| 6f 63 65 6f 6c 20 26 26 | 20 69 73 44 49 47 49 54 |oceol &&| isDIGIT|
|00005040| 28 2a 73 63 61 6e 29 29 | 0d 09 09 09 73 63 61 6e |(*scan))|....scan|
|00005050| 2b 2b 3b 0d 09 09 62 72 | 65 61 6b 3b 0d 09 63 61 |++;...br|eak;..ca|
|00005060| 73 65 20 4e 44 49 47 49 | 54 3a 0d 09 09 77 68 69 |se NDIGI|T:...whi|
|00005070| 6c 65 20 28 73 63 61 6e | 20 3c 20 6c 6f 63 65 6f |le (scan| < loceo|
|00005080| 6c 20 26 26 20 21 69 73 | 44 49 47 49 54 28 2a 73 |l && !is|DIGIT(*s|
|00005090| 63 61 6e 29 29 0d 09 09 | 09 73 63 61 6e 2b 2b 3b |can))...|.scan++;|
|000050a0| 0d 09 09 62 72 65 61 6b | 3b 0d 09 64 65 66 61 75 |...break|;..defau|
|000050b0| 6c 74 3a 09 09 2f 2a 20 | 4f 68 20 64 65 61 72 2e |lt:../* |Oh dear.|
|000050c0| 20 20 43 61 6c 6c 65 64 | 20 69 6e 61 70 70 72 6f | Called| inappro|
|000050d0| 70 72 69 61 74 65 6c 79 | 2e 20 2a 2f 0d 09 09 46 |priately|. */...F|
|000050e0| 41 49 4c 28 22 69 6e 74 | 65 72 6e 61 6c 20 72 65 |AIL("int|ernal re|
|000050f0| 67 65 78 70 20 66 6f 75 | 6c 75 70 22 29 3b 0d 09 |gexp fou|lup");..|
|00005100| 09 2f 2a 20 4e 4f 54 52 | 45 41 43 48 45 44 20 2a |./* NOTR|EACHED *|
|00005110| 2f 0d 09 7d 0d 0d 09 63 | 20 3d 20 73 63 61 6e 20 |/..}...c| = scan |
|00005120| 2d 20 72 65 67 69 6e 70 | 75 74 3b 0d 09 72 65 67 |- reginp|ut;..reg|
|00005130| 69 6e 70 75 74 20 3d 20 | 73 63 61 6e 3b 0d 0d 09 |input = |scan;...|
|00005140| 72 65 74 75 72 6e 28 63 | 29 3b 0d 7d 0d 0d 2f 2a |return(c|);.}../*|
|00005150| 0d 20 2d 20 72 65 67 6e | 65 78 74 20 2d 20 64 69 |. - regn|ext - di|
|00005160| 67 20 74 68 65 20 22 6e | 65 78 74 22 20 70 6f 69 |g the "n|ext" poi|
|00005170| 6e 74 65 72 20 6f 75 74 | 20 6f 66 20 61 20 6e 6f |nter out| of a no|
|00005180| 64 65 0d 20 2a 0d 20 2a | 20 5b 4e 6f 74 65 2c 20 |de. *. *| [Note, |
|00005190| 77 68 65 6e 20 52 45 47 | 41 4c 49 47 4e 20 69 73 |when REG|ALIGN is|
|000051a0| 20 64 65 66 69 6e 65 64 | 20 74 68 65 72 65 20 61 | defined| there a|
|000051b0| 72 65 20 74 77 6f 20 70 | 6c 61 63 65 73 20 69 6e |re two p|laces in|
|000051c0| 20 72 65 67 6d 61 74 63 | 68 28 29 0d 20 2a 20 74 | regmatc|h(). * t|
|000051d0| 68 61 74 20 62 79 70 61 | 73 73 20 74 68 69 73 20 |hat bypa|ss this |
|000051e0| 63 6f 64 65 20 66 6f 72 | 20 73 70 65 65 64 2e 5d |code for| speed.]|
|000051f0| 0d 20 2a 2f 0d 63 68 61 | 72 20 2a 0d 72 65 67 6e |. */.cha|r *.regn|
|00005200| 65 78 74 28 70 29 0d 72 | 65 67 69 73 74 65 72 20 |ext(p).r|egister |
|00005210| 63 68 61 72 20 2a 70 3b | 0d 7b 0d 09 72 65 67 69 |char *p;|.{..regi|
|00005220| 73 74 65 72 20 69 6e 74 | 20 6f 66 66 73 65 74 3b |ster int| offset;|
|00005230| 0d 0d 09 69 66 20 28 70 | 20 3d 3d 20 26 72 65 67 |...if (p| == ®|
|00005240| 64 75 6d 6d 79 29 0d 09 | 09 72 65 74 75 72 6e 28 |dummy)..|.return(|
|00005250| 4e 55 4c 4c 29 3b 0d 0d | 09 6f 66 66 73 65 74 20 |NULL);..|.offset |
|00005260| 3d 20 4e 45 58 54 28 70 | 29 3b 0d 09 69 66 20 28 |= NEXT(p|);..if (|
|00005270| 6f 66 66 73 65 74 20 3d | 3d 20 30 29 0d 09 09 72 |offset =|= 0)...r|
|00005280| 65 74 75 72 6e 28 4e 55 | 4c 4c 29 3b 0d 0d 23 69 |eturn(NU|LL);..#i|
|00005290| 66 64 65 66 20 52 45 47 | 41 4c 49 47 4e 0d 09 72 |fdef REG|ALIGN..r|
|000052a0| 65 74 75 72 6e 28 70 2b | 6f 66 66 73 65 74 29 3b |eturn(p+|offset);|
|000052b0| 0d 23 65 6c 73 65 0d 09 | 69 66 20 28 4f 50 28 70 |.#else..|if (OP(p|
|000052c0| 29 20 3d 3d 20 42 41 43 | 4b 29 0d 09 09 72 65 74 |) == BAC|K)...ret|
|000052d0| 75 72 6e 28 70 2d 6f 66 | 66 73 65 74 29 3b 0d 09 |urn(p-of|fset);..|
|000052e0| 65 6c 73 65 0d 09 09 72 | 65 74 75 72 6e 28 70 2b |else...r|eturn(p+|
|000052f0| 6f 66 66 73 65 74 29 3b | 0d 23 65 6e 64 69 66 0d |offset);|.#endif.|
|00005300| 7d 0d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00005310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005330| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005340| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005380| 00 00 01 00 00 00 01 6e | 00 00 00 6e 00 00 00 3e |.......n|...n...>|
|00005390| 61 74 65 20 41 35 20 72 | 65 66 65 72 65 6e 63 65 |ate A5 r|eference|
|000053a0| 73 20 66 6f 72 20 70 72 | 6f 63 65 64 75 72 65 20 |s for pr|ocedure |
|000053b0| 09 72 65 67 65 78 65 63 | 2e 63 02 00 00 00 54 45 |.regexec|.c....TE|
|000053c0| 58 54 4d 50 53 20 00 00 | 02 70 01 00 00 00 00 00 |XTMPS ..|.p......|
|000053d0| 00 00 54 45 58 54 4d 50 | 53 20 00 00 02 70 01 00 |..TEXTMP|S ...p..|
|000053e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000053f0| 00 00 a6 ea b4 50 00 00 | 52 82 00 00 01 ac 20 65 |.....P..|R..... e|
|00005400| 72 61 73 65 20 61 6c 6c | 20 73 79 6d 62 6f 6c 20 |rase all| symbol |
|00005410| 74 61 62 6c 65 20 72 65 | 73 6f 75 72 63 65 73 0d |table re|sources.|
|00005420| 09 2d 64 20 6e 61 6d 65 | 3d 28 54 52 55 45 7c 46 |.-d name|=(TRUE|F|
|00005430| 41 4c 53 45 29 09 23 20 | 73 65 74 20 63 6f 6d 70 |ALSE).# |set comp|
|00005440| 69 6c 65 20 74 69 6d 65 | 20 76 61 72 69 61 62 6c |ile time| variabl|
|00005450| 65 20 6e 61 6d 65 0d 09 | 2d 65 20 66 69 6c 65 20 |e name..|-e file |
|00005460| 09 09 09 09 23 20 77 72 | 69 74 65 20 65 72 72 6f |....# wr|ite erro|
|00005470| 72 73 20 74 6f 20 66 69 | 6c 65 0d 09 2d 66 6f 72 |rs to fi|le..-for|
|00005480| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 63 6f 64 |...H..Mo|naco.cod|
|00005490| 65 2c 20 61 6e 64 20 73 | 68 6f 75 6c 64 20 6e 6f |e, and s|hould no|
|000054a0| 74 0d 20 2a 20 63 00 06 | 00 08 00 50 00 20 01 dd |t. * c..|...P. ..|
|000054b0| 02 3d 00 50 00 20 01 dd | 02 3d a6 ea cc 73 00 00 |.=.P. ..|.=...s..|
|000054c0| 4c d8 00 00 4c d8 00 00 | 4c 32 01 00 00 00 00 1e |L...L...|L2......|
|000054d0| 00 50 00 20 01 dd 02 3d | 00 50 00 20 01 dd 02 3d |.P. ...=|.P. ...=|
|000054e0| 00 00 4c 32 00 00 00 00 | 00 00 00 00 00 00 00 00 |..L2....|........|
|000054f0| 01 00 00 00 01 6e 00 00 | 00 6e 00 00 00 3e 00 51 |.....n..|.n...>.Q|
|00005500| 62 20 0d f6 00 00 00 1c | 00 3e 00 00 4d 50 53 52 |b ......|.>..MPSR|
|00005510| 00 01 00 0a 03 ed ff ff | 00 00 00 00 00 00 00 00 |........|........|
|00005520| 03 f0 ff ff 00 00 00 4c | 00 57 95 f0 00 00 00 00 |.......L|.W......|
|00005530| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005540| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005550| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005570| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+